欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > python学习之爬虫基础

python学习之爬虫基础

2025/2/21 3:23:01 来源:https://blog.csdn.net/zhongyuekang820/article/details/145673851  浏览:    关键词:python学习之爬虫基础

一,python爬虫的基本概念

Python 爬虫(Web Scraping)是一种通过编程手段从互联网上获取网页内容并提取信息的技术。Python 是进行 Web Scraping 的常用语言,因为它的库生态非常强大,学习曲线相对平缓。

爬虫的基本流程大致如下:

  1. 发送 HTTP 请求:爬虫首先向目标网站发送 HTTP 请求,通常是通过 requests 库实现,获取网页的 HTML 内容。
  2. 解析网页内容:一旦获取了网页内容,接下来需要解析网页的 HTML 结构,常用的解析库有 BeautifulSouplxml,它们可以帮助你提取出网页中的数据。
  3. 数据存储:提取出来的数据可以存储在各种格式中,最常用的有 CSV、JSON 或数据库(如 SQLite)。
  4. 处理反爬虫机制:有些网站会使用反爬虫机制来防止爬虫抓取数据,这时你可能需要模拟浏览器的行为,使用像 SeleniumPlaywright 或者添加代理等方法来绕过这些防护措施。

Python 爬虫的常用库

1. requests

requests 是一个简洁的 HTTP 库,可以让你轻松发送请求、获取网页内容。常用于发送 GET 或 POST 请求。

安装:

pip install requests

示例代码:

import requestsurl = 'https://example.com'
response = requests.get(url)
html_content = response.text
print(html_content)
2. BeautifulSoup

BeautifulSoup 是一个解析 HTML 和 XML 的库,常用于从网页中提取数据。它的 API 很简单,可以让你通过 DOM 结构提取标签、文本、属性等信息。

安装:

pip install beautifulsoup4

示例代码:

from bs4 import BeautifulSoupsoup = BeautifulSoup(html_content, 'html.parser')
# 提取网页标题
title = soup.title.string
print(title)
3. lxml

lxml 是另一个强大的 HTML 和 XML 解析库,相比 BeautifulSoup,它的解析速度更快,可以支持 XPath 查询。

安装:

pip install lxml

示例代码:

from lxml import htmltree = html.fromstring(html_content)
title = tree.xpath('//title/text()')[0]
print(title)
4. Selenium

当网站使用 JavaScript 动态加载内容时,requestsBeautifulSoup 无法直接获取到渲染后的内容,这时可以使用 Selenium,它可以模拟浏览器,执行 JavaScript 并提取数据。

安装:

pip install selenium

你还需要安装一个 WebDriver,例如 ChromeDriver(如果你使用的是 Chrome 浏览器)。

示例代码:

from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome(executable_path='/path/to/chromedriver')
driver.get('https://example.com')
html_content = driver.page_source
driver.quit()# 使用 BeautifulSoup 或 lxml 解析获取到的 HTML 内容
5. Scrapy

Scrapy 是一个功能非常强大的爬虫框架,适用于复杂的爬虫任务。它内置了许多优化和工具,支持多线程、自动处理请求和响应、支持存储数据等。

安装:

pip install scrapy

Scrapy 是一个框架,通常用于大型项目,简单的爬虫任务使用 requestsBeautifulSoup 足矣。

爬虫基本步骤

  1. 发送请求:向目标网站发送请求,获取网页内容。
  2. 解析网页:使用解析库(如 BeautifulSoup 或 lxml)提取网页数据。
  3. 存储数据:将数据存储到文件中或数据库中。
  4. 处理反爬虫机制:
    • 设置请求头(如 User-Agent)模拟浏览器。
    • 使用代理池隐藏 IP 地址。
    • 使用验证码识别(如果需要)。

反爬虫策略

有些网站会采取各种方法来防止被爬虫抓取数据,包括:

  • IP 封禁:通过限制同一 IP 地址频繁访问。
  • 验证码:用验证码来区分人类和机器。
  • User-Agent 检查:通过检查请求头中的 User-Agent 判断请求是否来自爬虫。
  • 动态加载内容:通过 JavaScript 动态加载数据,爬虫无法直接获取 HTML 内容。

解决方法:

  • 使用 代理池(如 requests 的代理功能或使用第三方库如 Scrapy 的代理中间件)来轮换 IP。
  • 修改 请求头,模拟常见浏览器的请求头。
  • 使用 SeleniumPlaywright 来模拟真实浏览器,执行 JavaScript。

示例:简单爬虫抓取数据

下面是一个简单的示例,抓取网页中的标题和链接:

import requests
from bs4 import BeautifulSoup# 发送 GET 请求获取网页内容
url = 'https://example.com'
response = requests.get(url)
html_content = response.text# 使用 BeautifulSoup 解析 HTML
soup = BeautifulSoup(html_content, 'html.parser')# 提取标题
title = soup.title.string
print(f"网页标题: {title}")# 提取所有链接
links = soup.find_all('a')
for link in links:href = link.get('href')print(f"链接: {href}")

数据存储

你可以将爬取的数据存储到文件(如 CSV、JSON)或者数据库中。以下是将数据存储到 CSV 文件的例子:

import csvdata = [{"title": "Article 1", "url": "https://example.com/article1"},{"title": "Article 2", "url": "https://example.com/article2"}
]# 保存为 CSV
with open('data.csv', mode='w', newline='') as file:writer = csv.DictWriter(file, fieldnames=["title", "url"])writer.writeheader()writer.writerows(data)

总结

  1. 选择合适的库:如果是简单爬虫,可以使用 requestsBeautifulSoup,如果网页内容是动态生成的,可以用 Selenium
  2. 遵守网站的 robots.txt:在爬取数据时,尊重网站的 robots.txt 文件中的爬虫规则。
  3. 反爬虫策略:使用代理、模拟浏览器、控制请求频率等手段避免被封禁。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词