python爬虫实例代码
pythonimport requests
from bs4 import BeautifulSoup
# 定义目标网站的URL
url = 'https://example.com'
# 发送HTTP请求获取页面内容
response = requests.get(url)
# 检查是否成功获取页面内容
if response.status_code == 200:
# 使用BeautifulSoup解析页面内容
soup = BeautifulSoup(response.text, 'html.parser')
# 找到页面上的特定元素,例如标题
title = soup.find('title')
if title:
# 提取标题文本并打印
print("网站标题:", title.text)
else:
print("未找到标题")
# 进一步解析页面内容,提取其他信息
# 例如,找到所有链接
links = soup.find_all('a')
for link in links:
# 打印链接文本和URL
print("链接文本:", link.text)
print("链接URL:", link.get('href'))
else:
print("无法访问网站")
# 记得处理异常和错误,例如连接超时、页面不存在等情况
使用User-Agent头部: 有些网站会根据User-Agent头部来区分爬虫和普通用户。你可以设置一个合理的User-Agent来模拟浏览器行为,以避免被封禁。
pythonheaders = {'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(url, headers=headers)
限制请求频率: 避免在短时间内发送大量请求,这可能会引起目标网站的反爬虫机制。你可以使用time.sleep
来添加延迟,或者使用异步爬虫库来控制请求频率。
pythonimport time
time.sleep(2) # 在每次请求之间休眠2秒
处理异常: 在爬虫过程中,经常会出现各种异常,如连接超时、页面不存在等。确保你的代码能够处理这些异常情况,以防止爬虫中断。
pythontry:
response = requests.get(url)
response.raise_for_status() # 如果响应状态码不是200,会抛出异常
except requests.exceptions.RequestException as e:
print("请求发生异常:", e)
使用合适的解析库: BeautifulSoup是一个流行的HTML解析库,但在处理JavaScript生成的页面内容时可能会有限制。如果需要爬取动态加载的内容,考虑使用Selenium等工具。
数据存储: 爬取的数据需要存储在适当的地方,可以选择将数据保存到文本文件、数据库或其他数据存储系统中。
合法性和道德性: 确保你的爬虫行为合法且道德。
监控和日志记录: 定期监控你的爬虫活动,记录请求和响应信息,以便在出现问题时进行故障排查。