爬取不同页面的数据通常涉及以下步骤:
发送请求 :使用`requests`库向目标网站发送HTTP请求,获取网页内容。
解析内容:
使用`BeautifulSoup`或其他解析库(如`pyquery`)解析HTML内容,提取所需数据。
处理分页
如果数据是静态的,可以通过查找页面中的“下一页”链接来循环访问不同页面。
如果数据是动态加载的(如使用JavaScript),可能需要使用像`Selenium`这样的工具来模拟浏览器行为,执行JavaScript并获取动态加载的数据。
保存数据:
将提取的数据保存到文件、数据库或其他存储介质中。
下面是一个简单的示例,展示如何使用`requests`和`BeautifulSoup`爬取多个静态页面的数据:
```python
import requests
from bs4 import BeautifulSoup
定义要爬取的多个网页URL列表
urls = [
'http://www.example.com/page1',
'http://www.example.com/page2',
'http://www.example.com/page3'
]
for url in urls:
发送HTTP GET请求获取网页内容
response = requests.get(url)
使用BeautifulSoup解析HTML页面
soup = BeautifulSoup(response.content, 'html.parser')
获取网页标题
title = soup.title.string
获取网页正文内容
content = soup.find('body').get_text()
打印网页标题和正文内容
print('标题:', title)
print('正文内容:', content)
如果遇到动态加载的数据,可能需要使用`Selenium`:
```python
from selenium import webdriver
from bs4 import BeautifulSoup
import re
设置Chrome浏览器驱动路径
driver_path = 'path/to/chromedriver'
创建浏览器实例
driver = webdriver.Chrome(executable_path=driver_path)
假设我们有一个包含多个URL的文本文件
with open('urls.txt', 'r', encoding='utf-8') as f:
urls = f.readlines()
for url in urls:
访问URL
driver.get(url.strip())
获取页面源代码
content_text = driver.page_source
使用BeautifulSoup解析HTML内容
soup = BeautifulSoup(content_text, 'html.parser')
提取所需数据(这里以提取标题为例)
titles = soup.find_all('h2')
for title in titles:
print(title.text)
关闭浏览器
driver.quit()
请注意,实际操作时,需要遵守目标网站的`robots.txt`文件规定,尊重网站的爬取策略,并注意不要对网站服务器造成过大负担