使用Python编写带分页的爬虫通常涉及以下步骤:
安装必要的库
`requests`:用于发送HTTP请求。
`BeautifulSoup`:用于解析HTML内容。
`time`:用于控制爬取速率。
分析目标网站的分页机制
确定分页信息是如何在URL中传递的,例如通过查询参数(如`page=1`)。
查找是否有锚标记或JavaScript动态加载的“下一页”按钮。
构造分页URL
使用循环爬取所有分页结果
使用`while`循环或`for`循环遍历所有分页链接。
实现数据提取函数
创建一个函数来提取页面上的所需数据。

处理提取的数据
保存或进一步处理提取的数据。
确定爬虫结束条件
可以通过检查“下一页”链接不存在、到达最后一页链接或页面上的特定文字/元素来确定爬虫何时结束。
```python
import requests
from bs4 import BeautifulSoup
爬取函数
def crawl_page(url):
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
return None
解析函数
def parse_page(html):
soup = BeautifulSoup(html, 'html.parser')
提取数据的逻辑,这里需要根据实际网页结构来写
data = []
示例:提取所有段落文本
for p in soup.find_all('p'):
data.append(p.get_text())
return data
主程序
base_url = 'http://example.com/page={}' 基础URL和分页参数
start_page = 1
end_page = 10 假设我们要爬取前10页
all_data = []
for page in range(start_page, end_page + 1):
url = base_url.format(page)
html = crawl_page(url)
if html:
data = parse_page(html)
all_data.extend(data)
print(f'Page {page} data length: {len(data)}')
else:
print(f'Failed to retrieve page {page}')
break 如果某页失败,退出循环
保存数据
with open('output.txt', 'w') as f:
for item in all_data:
f.write(item + '\n')
请注意,这只是一个基本示例,实际应用中可能需要根据目标网站的具体分页结构和反爬虫机制进行相应的调整。另外,请确保在爬取网站数据时遵守相关法律法规和网站的使用条款
