六个常见爬虫案例分享及源码附录
在学习网络爬虫的过程中,实际案例可以帮助更好地理解和应用技术。以下是六个常见的网络爬虫案例分享,每个案例都包含主要思想和关键代码片段。
1. 简单网页数据抓取
案例说明: 使用Python的requests和BeautifulSoup库抓取网页的标题。
import requests
from bs4 import BeautifulSoup
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
title = soup.find('title').get_text()
print(f'Title: {title}')
2. 爬取并解析JSON数据
案例说明: 访问返回JSON数据的API,并解析特定字段。
import requests
url = 'https://api.example.com/data'
response = requests.get(url)
data = response.json()
for item in data['items']:
print(item['name'], item['value'])
3. 分页抓取
案例说明: 自动抓取多页内容,如论坛帖子列表。
import requests
from bs4 import BeautifulSoup
base_url = 'https://example.com/page='
for page in range(1, 6):
response = requests.get(f'{base_url}{page}')
soup = BeautifulSoup(response.text, 'html.parser')
# 假设每页有多个名称在h2标签中
for name in soup.find_all('h2', class_='name'):
print(name.get_text())
4. 模拟登录抓取
案例说明: 使用requests库的会话功能,模拟登录访问受保护的内容。
import requests
login_url = 'https://example.com/login'
protected_url = 'https://example.com/protected'
credentials = {'username': 'your_username', 'password': 'your_password'}
session = requests.Session()
session.post(login_url, data=credentials)
response = session.get(protected_url)
print(response.text)
5. 动态网页抓取
案例说明: 使用Selenium库处理JavaScript加载的内容。
from selenium import webdriver
url = 'https://example.com/dynamic'
driver = webdriver.Chrome()
driver.get(url)
# 假设元素包含在特定类下
content = driver.find_element_by_class_name('content')
print(content.text)
driver.quit()
6. 图片下载
案例说明: 抓取网页上的图片并下载到本地。
import requests
from bs4 import BeautifulSoup
import os
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
img_tags = soup.find_all('img')
img_dir = 'images'
os.makedirs(img_dir, exist_ok=True)
for img in img_tags:
img_url = img['src']
img_data = requests.get(img_url).content
img_name = os.path.basename(img_url)
with open(os.path.join(img_dir, img_name), 'wb') as f:
f.write(img_data)
注意事项
- 遵守爬虫礼节: 爬虫时请遵循网站的
robots.txt
协议和使用请求头中的User-Agent
进行标识。 - 法律合规: 请确保爬取数据符合相关法律法规。
- 负载控制: 使用延时、IP代理等技术避免对目标网站造成负担。
希望这些案例对你有帮助!根据不同需求,你可以进一步拓展和调整代码。