首页 > 编程语言 >一篇最全Python 爬虫超详细讲解(零基础入门,适合小白)

一篇最全Python 爬虫超详细讲解(零基础入门,适合小白)

时间:2024-10-26 17:45:04浏览次数:3  
标签:网页 Python 最全 爬虫 href 网页内容 requests

爬虫是指通过编程自动从网页上获取信息的技术.想象你平时打开网页,右键点击 “查看源代码”,那些你看到的HTML代码就是网页的结构,而爬虫就像一位帮你阅读这些网页内容的“机器人”.

创作不易,还请各位同学三连点赞!!收藏!!转发!!!

刚入门学习Python的小伙伴可以试试我的这份学习方法和籽料,免费自取!!《资源分享戳这》

本文将详细讲解如何从零开始编写一个Python爬虫,即使是完全没接触过编程的朋友也能理解.

一、爬虫的基本流程

  1. 发送请求:爬虫向目标网页发送请求,获取网页内容.

  2. 解析网页:从返回的网页内容中提取你需要的信息.

  3. 保存数据:将提取到的信息保存到文件或数据库中,以便后续分析.

二、常用爬虫库

在Python中,有两个非常流行的库用于爬虫开发:

  • requests:用于发送网络请求,获取网页内容.

  • BeautifulSoup:用于解析网页内容,提取需要的数据.

1. 安装库

首先,你需要安装这两个库.在命令行中执行以下命令:

pip install requests beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple

三、简单爬虫示例

接下来,我们会编写一个简单的爬虫,从一个网页上获取数据.

1. 获取网页内容

第一步是使用 requests 库来获取网页的内容.我们以获取百度首页为例.

import requests

# 发送请求获取网页内容
url = 'https://www.baidu.com'
response = requests.get(url)

# 打印网页内容
print(response.text)
解释:
  • requests.get(url) 用于向指定网址发送请求并获取网页内容.

  • response.text 返回网页的HTML代码.

运行后,你会看到大量的HTML代码,这就是百度首页的内容.

2. 解析网页内容

获取网页内容后,我们需要用 BeautifulSoup 库来解析HTML,提取我们需要的信息.接下来我们解析百度首页的标题.

from bs4 import BeautifulSoup

# 解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')

# 获取标题
title = soup.title.text
print('网页标题:', title)
解释:
  • BeautifulSoup(response.text, 'html.parser') 用于解析HTML内容.

  • soup.title.text 返回网页的标题.

输出:

makefile


网页标题: 百度一下,你就知道
3. 提取更多信息

让我们继续提取网页中的链接(<a>标签中的 href 属性).这非常有用,例如你想抓取某个网站上的所有文章链接.

# 获取所有的<a>标签
links = soup.find_all('a')

# 打印所有链接
for link in links:
    href = link.get('href')
    print(href)
解释:
  • soup.find_all('a') 用于获取网页中的所有链接.

  • link.get('href') 获取每个链接的 href 属性,也就是网址.

四、爬虫的分类

1. 简单爬虫(静态网页)

如果网页是静态的,所有的数据直接在HTML代码中呈现,这种网页最容易爬取.以上示例就是一个典型的静态网页爬虫.

2. 动态爬虫(处理JavaScript生成的内容)

有些网页的数据不是直接在HTML中,而是通过JavaScript动态生成的.这类网页需要更复杂的处理方式,通常我们会使用 Selenium 这样的库来模拟浏览器操作.

安装 Selenium:
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple

Selenium 可以像真实的用户一样与网页交互,甚至可以点击按钮、滚动页面等.比如要爬取动态生成的数据,我们可以使用Selenium来加载网页.

示例:
from selenium import webdriver

# 设置浏览器驱动路径
driver = webdriver.Chrome()

# 打开网页
driver.get('https://www.example.com')

# 获取网页标题
print(driver.title)

# 关闭浏览器
driver.quit()
3. 爬虫框架(Scrapy)

当你需要大规模爬取数据时,可以使用专门的爬虫框架——Scrapy.Scrapy 是一个强大的爬虫框架,具有异步、高效的特点,适合用于构建复杂的爬虫.

安装 Scrapy:
pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple

五、爬虫常见问题及解决方案

1. 网页反爬机制

有些网站不允许爬虫访问,通常会通过检测请求头或IP地址来防止爬虫访问.为了绕过这种限制,我们可以伪装成正常用户.

解决方法:添加请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}

response = requests.get(url, headers=headers)
2. 延迟访问

频繁访问某个网站可能会触发反爬机制,我们可以通过设置延迟避免这种问题.

import time

# 延迟2秒后发送下一个请求
time.sleep(2)
3. 代理IP

如果网站通过检测IP地址限制访问,我们可以使用代理IP.

proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'https://10.10.1.10:1080',
}

response = requests.get(url, proxies=proxies)

六、保存数据

当我们提取到需要的信息后,通常需要将数据保存起来,常见的保存方式有保存到CSV文件数据库.

1. 保存到CSV文件
import csv

# 保存数据到CSV文件
with open('data.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerow(['标题', '链接'])  # 写入表头
    for link in links:
        writer.writerow([link.text, link.get('href')])
2. 保存到数据库

可以使用 SQLite 或其他数据库,将数据保存到数据库中.

import sqlite3

# 连接数据库(如果不存在会自动创建)
conn = sqlite3.connect('data.db')
cursor = conn.cursor()

# 创建表
cursor.execute('CREATE TABLE IF NOT EXISTS links (title TEXT, href TEXT)')

# 插入数据
for link in links:
    cursor.execute('INSERT INTO links (title, href) VALUES (?, ?)', (link.text, link.get('href')))

# 提交事务并关闭连接
conn.commit()
conn.close()

七、总结

  1. 爬虫的基本流程:发送请求,解析网页,提取并保存数据.

  2. 常用库requests 用于发送请求,BeautifulSoup 用于解析HTML.

  3. 进阶技术:处理动态网页需要用到 Selenium,而大规模爬取可以使用 Scrapy 框架.

  4. 应对反爬:通过伪装请求头、设置延迟以及使用代理IP等方式绕过反爬机制.

八、参考文档

  • Python Requests 文档

  • BeautifulSoup 官方文档

希望这篇文章能够帮助你轻松入门 Python 爬虫,开始获取网页上的数据!

关于零基础怎么学Python爬虫?

这里分享给大家一套免费的学习资料,包含视频、源码/电子书,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以加我微信一起来学习交流。

① Python所有方向的学习路线图,清楚各个方向要学什么东西

②Python、PyCharm学习工具包全家桶,环境配置教程视频

③Python全套电子书籍PDF,全部都是干货知识

④ 100多节Python课程视频,涵盖必备基础、爬虫和数据分析

⑤ 100多个Python实战案例,学习不再是只会理论

 Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

图片​​​​​​

视频教程

大信息时代,传统媒体远不如视频教程那么生动活泼,一份零基础到精通的全流程视频教程分享给大家

图片​​​​​​

实战项目案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

图片​​​​​​

图片​​​​​​

副业兼职路线

​​​​​​

 希望这些内容对你有帮助,也希望能帮到大家,因为你我都是热爱python的编程语言爱好者。

标签:网页,Python,最全,爬虫,href,网页内容,requests
From: https://blog.csdn.net/Candyz7/article/details/143190438

相关文章

  • python实战(三)——文本向量化/文本表示
    一、概念    文本向量化是自然语言处理领域的重要环节,也是现在大语言模型开发重要基础。计算机程序无法理解文字信息(实际上非数值类型的信息都无法理解),因此我们需要将文字信息转换成计算机程序可理解的数值类型。通俗来说就是我们的算法模型是一系列函数和公式的组合......
  • [python]windows上通过whl文件安装sounddevice教程
    要通过.whl文件安装sounddevice,可以按照以下步骤进行操作:一、准备工作下载.whl文件:从gitee.com/FIRC/pythonlibs_whl_mirror或其他可信任的源下载sounddevice的.whl安装包。确保下载的.whl文件与你的Python版本和系统架构相匹配。安装pip:pip是Python的包管理工具,通常与Python一起安......
  • [python]windows上通过whl文件安装numpy+mkl教程
    在Windows上通过.whl文件安装numpy+mkl,可以按照以下步骤进行:一、准备工作下载numpy+mkl的.whl文件:访问可靠的Python库下载源,如gitee.com/FIRC/pythonlibs_whl_mirror。进去后按Ctrl+F搜索numpy+mkl,找到与你的Python版本和系统架构相匹配的.whl文件。下载该.whl文件到本地计算机。确......
  • 【黑马python:函数】51-61
    本节目录一、前言二、函数的基础定义语法1.定义形式2.练习案例:查核酸三、函数的传入参数1.语法解析2.案例升级:核酸四、函数的返回值1.语法格式2.返回值的None类型五、函数的说明文档六、函数的嵌套调用七、变量在函数中的作用域1.局部变量与全局变量2.global关键字八......
  • python基础综合案例(数据可视化-动态柱状图)
    1.基础柱状图的构建打开浏览器,你会发现这是一个动态图,会随着时间变化而变化具体效果大家可以看我主页有个动态柱状图视频本质上来说,是和我们构建一个折线统计图差不多的,只是把对象换了一下如果我们需要反转x和y轴,可以输入以下代码#反转x轴和y轴bar.reversal_axis()......
  • Python网络爬虫入门指南
    Python网络爬虫入门指南网络爬虫(WebCrawler),又称为网络蜘蛛(WebSpider),是一种自动化程序,能够遍历互联网上的网页,收集并提取所需的数据。Python作为一种功能强大且易于学习的编程语言,非常适合用于编写网络爬虫。本文将带你了解Python网络爬虫的基本概念、主要库及其使用方法......
  • Python 条件语句详解 if - elif-else
    Python条件语句详解一、引言在编程中,条件语句是一种基本的控制结构,它允许程序根据不同的条件执行不同的代码块。Python提供了丰富的条件语句,包括if、elif(elseif的缩写)和else,这些语句使得程序能够根据特定的条件做出决策,并执行相应的操作。二、条件语句的基本概念(......
  • 100种算法【Python版】第10篇——深度优先搜索
    本文目录1深度优先搜索2示例说明:迷宫路径查找2.1问题描述2.2DFS解决逻辑2.3python代码3算法应用3.1数独问题3.1.1DFS求解逻辑3.1.2python代码3.2单词搜索3.2.1python代码3.2.2代码逻辑4总结4.1优点4.2缺点1深度......
  • 如何把一个python列表(有很多个元素)变成一个excel表格的第一列?
    大家好,我是Python进阶者。一、前言前几天在Python最强王者群有个叫【麦当】的粉丝问了一个关于Python如何把一个python列表(有很多个元素)变成一个excel表格的第一列的问题,这里拿出来给大家分享下,一起学习。二、解决过程这里给出【dcpeng】和【德善堂小儿推拿-瑜亮老师】大佬......
  • Python的pickle模块
            pickle是Python标准库中的一个模块,用于对象的序列化(serialization)和反序列化(deserialization)。        序列化是将对象转换为字节流的过程,而反序列化则是从字节流恢复对象的过程。        通过pickle模块,可以将Python对象保存到文件......