设计百度页面遍历爬取工具 遍历10个数据页面 抽取数据页面的相关信息,并记录数据信息 数据存为json格式文件 要求 信息:网页标题、页面链接、网页摘要 json格式为: {“title”:”网页标题”, ”link”:”http://XXXXXX”, ”summary”::”网页摘要”}, 使用python实现
时间: 2025-06-25 07:07:20 浏览: 14
### 百度页面爬虫实现方案
为了完成此任务,可以按照以下方式设计程序逻辑。首先需要了解百度搜索引擎的工作机制及其返回的结果结构[^1]。通常情况下,可以通过模拟HTTP请求来获取搜索结果页面的HTML内容,并利用正则表达式或BeautifulSoup库解析这些数据。
#### 构建搜索URL
百度搜索结果页面的URL遵循一定的模式,例如`https://www.baidu.com/s?wd=关键词&pn=起始位置`。其中参数`wd`表示查询关键字,而`pn`用于控制分页显示的位置(每页大约有10条记录)。因此,在遍历多个页面时需调整`pn`值以访问不同页码的数据[^1]。
#### 获取页面HTML
采用requests库发起GET请求至构建好的URL地址处,从而获得响应对象中的text属性即为目标网页源代码字符串形式的内容[^1]。需要注意的是设置合适的headers头信息模仿真实浏览器行为以免被服务器识别为恶意爬取而导致封禁IP等问题发生。
#### 解析内容与处理翻页
运用bs4.BeautifulSoup类实例化传入html文档以及指定解析器 lxml 或 html.parser 来创建树形结构便于查找特定标签节点下的子元素们。对于每一个单独的搜索项而言,它们往往封装在一个class名为"c-container" 的div块内部;进一步定位h3标题a标签可得到超链接url路径还有对应的描述文字片段等重要字段信息[^1]。
#### 存储数据到JSON文件
最后一步就是把收集起来的信息序列化成json格式写入本地磁盘上的新文件当中去。借助内置模块 json.dump 方法即可轻松达成目的。
以下是完整的代码示例:
```python
import requests
from bs4 import BeautifulSoup
import json
def fetch_baidu_results(keyword, num_pages):
base_url = 'https://www.baidu.com/s'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/'
'89.0.4389.82 Safari/537.36',
}
all_data = []
for page in range(num_pages):
params = {'wd': keyword, 'pn': str(page * 10)}
response = requests.get(base_url, params=params, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
items = soup.find_all('div', class_='c-container')
for item in items:
try:
title_tag = item.h3.a
link = title_tag['href']
title = title_tag.get_text(strip=True)
abstract_tags = item.find(class_='c-abstract') or \
item.find('span', class_='news-cmd')
if not abstract_tags:
continue
summary = ''.join(abstract_tags.stripped_strings).strip()
entry = {"title": title,
"link": link,
"summary": summary}
all_data.append(entry)
except Exception as e:
pass
return all_data
if __name__ == '__main__':
results = fetch_baidu_results('人工智能', 10)
with open('baidu_search_results.json', 'w', encoding='utf-8') as f:
json.dump(results, f, ensure_ascii=False, indent=4)
```
阅读全文
相关推荐


















