基础知识详细介绍
Python爬虫是一种自动化获取网页数据的技术。以下是一些基础知识和概念的详细介绍:
1. HTTP协议基础
- 请求(Request):客户端(如浏览器)向服务器请求数据。
- 响应(Response):服务器返回请求的结果。
- 状态码(Status Code) :表示请求结果的数字代码,如
200
表示成功,404
表示未找到页面。
2. Python爬虫常用库
requests
- 功能:发送HTTP请求。
- 常用方法 :
GET
、POST
、PUT
、DELETE
等。 - 特点:简单易用,支持Session、Cookies、代理等。
BeautifulSoup
- 功能:解析HTML和XML文档。
- 解析器 :
html.parser
(Python标准库)、lxml
(更快,需安装)。 - 常用方法 :
find()
、find_all()
用于查找标签,soup.get_text()
获取纯文本。
lxml
- 功能:解析XML和HTML。
- 特点:解析速度快,支持XPath和XSLT。
3. 发送HTTP请求
使用requests
库发送HTTP请求:
python
import requests
response = requests.get('http://example.com')
print(response.status_code) # 状态码
print(response.text) # 响应内容
4. 解析HTML文档
使用BeautifulSoup
解析HTML:
python
from bs4 import BeautifulSoup
html_doc = "<html><head><title>The Dormouse's story</title></head><body>"
soup = BeautifulSoup(html_doc, 'html.parser')
# 查找标题
title = soup.find('title').text
print(title) # The Dormouse's story
5. 处理JavaScript渲染的页面
有些网页内容是通过JavaScript动态加载的,可以使用Selenium
或Pyppeteer
来处理:
Selenium
- 功能:自动化测试工具,可以模拟浏览器行为。
- 安装 :
pip install selenium
。 - 使用:需要对应浏览器的WebDriver。
Pyppeteer
- 功能:Python版的Puppeteer,控制无头浏览器。
- 安装 :
pip install pyppeteer
。
6. 异常处理
网络请求和解析过程中可能会遇到各种异常,需要进行异常处理:
python
import requests
from bs4 import BeautifulSoup
try:
response = requests.get('http://example.com')
response.raise_for_status() # 检查状态码
soup = BeautifulSoup(response.text, 'html.parser')
# 解析逻辑
except requests.RequestException as e:
print(f"请求错误: {e}")
except Exception as e:
print(f"解析错误: {e}")
7. 遵守Robots协议
在爬取网站数据前,应检查网站的robots.txt
文件,了解网站的爬虫政策:
http://example.com/robots.txt
8. 用户代理和请求头
有些网站会根据用户代理(User-Agent)来判断请求是否来自爬虫,可能需要设置合适的用户代理:
python
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.3'
}
response = requests.get('http://example.com', headers=headers)
9. 法律和道德
在进行网页爬取时,应遵守相关法律法规,尊重网站的版权和隐私政策,合理使用爬虫技术。