首页 > Python资料 博客日记
使用 Python 指定内容 爬取百度引擎搜索结果
2024-10-09 02:00:05Python资料围观26次
在本篇博客中,我将展示如何使用 Python 编写一个简单的百度搜索爬虫。这个爬虫可以自动化地从百度获取搜索结果,并提取每个结果的标题和链接。我们将使用 requests
库来发送 HTTP 请求,使用 BeautifulSoup
库来解析 HTML 内容。
需求分析
在实现爬虫之前,我们需要明确以下需求:
- 通过构建百度搜索的 URL 来发送搜索请求。
- 解析百度搜索结果页面,提取每个结果的标题和链接。
- 将搜索结果以列表形式返回,方便后续处理和展示。
使用库
我们需要安装两个 Python 库:
requests
:用于发送 HTTP 请求。BeautifulSoup
:用于解析 HTML 内容。
安装这两个库可以使用以下命令:
pip install requests beautifulsoup4
步骤和代码解析
1.导入库
import requests
from bs4 import BeautifulSoup
我们首先导入了 requests
和 BeautifulSoup
库。
2.定义搜索函数
def baidu_search(keyword):
定义一个名为 baidu_search
的函数,接受搜索关键字作为参数。
3.设置请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'
}
设置请求头信息,模拟浏览器访问,以防止被百度识别为爬虫。
4.构建搜索 URL 并发送请求
search_url = f"https://www.baidu.com/s?wd={keyword}"
response = requests.get(search_url, headers=headers)
5.检查请求状态并解析响应内容
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
检查请求是否成功,如果成功,使用 BeautifulSoup
解析响应内容。
6.查找并提取搜索结果
search_results = soup.find_all('h3', class_='t')
查找所有包含搜索结果的 HTML 元素,并提取其中的标题和链接。
7.返回结果
results = []
for result in search_results:
title = result.get_text()
link = result.a['href']
results.append({'title': title, 'link': link})
return results
将提取的标题和链接存储在字典列表中并返回。
8.测试爬虫
keyword = "编程"
search_results = baidu_search(keyword)
if search_results:
print(f"关键字 '{keyword}' 的搜索结果:")
for idx, result in enumerate(search_results, 1):
print(f"{idx}. {result['title']}")
print(f" 链接: {result['link']}")
print()
else:
print("未能获取搜索结果。")
调用 baidu_search
函数进行测试,并打印搜索结果。
完整代码
以下是完整的代码实现:
import requests
from bs4 import BeautifulSoup
def baidu_search(keyword):
# 设置请求头部信息,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'
}
# 构建搜索URL
search_url = f"https://www.baidu.com/s?wd={keyword}"
# 发送GET请求
response = requests.get(search_url, headers=headers)
# 检查请求是否成功
if response.status_code == 200:
# 解析响应内容
soup = BeautifulSoup(response.text, 'html.parser')
# 查找搜索结果的标题和链接
search_results = soup.find_all('h3', class_='t')
# 提取标题和链接
results = []
for result in search_results:
title = result.get_text()
link = result.a['href']
results.append({'title': title, 'link': link})
return results
else:
print("请求失败!")
return None
# 测试爬虫功能
keyword = "编程"
search_results = baidu_search(keyword)
if search_results:
print(f"关键字 '{keyword}' 的搜索结果:")
for idx, result in enumerate(search_results, 1):
print(f"{idx}. {result['title']}")
print(f" 链接: {result['link']}")
print()
else:
print("未能获取搜索结果。")
运行结果
说明
在本篇博客中,我们创建了一个简单的百度搜索爬虫,通过 Python 的 requests
库发送 HTTP 请求,使用 BeautifulSoup
库解析 HTML 内容,并提取搜索结果的标题和链接。该爬虫主要包含以下几个步骤:
- 导入库:导入
requests
和BeautifulSoup
库。 - 定义搜索函数:创建
baidu_search
函数,用于构建搜索 URL 并发送请求。 - 设置请求头:模拟浏览器的请求头,以防被识别为爬虫。
- 构建搜索 URL 并发送请求:根据用户输入的关键字构建搜索 URL,并发送 GET 请求。
- 检查请求状态并解析响应内容:确认请求成功后,使用 BeautifulSoup 解析 HTML 内容。
- 查找并提取搜索结果:从解析后的 HTML 中提取标题和链接。
- 返回结果:将提取的数据以字典形式存储,并返回给调用者。
- 测试爬虫:通过实际的关键字测试爬虫功能,并输出结果。
相关类型推荐
如果你对网络爬虫和数据提取感兴趣,可以尝试以下项目:
- 微博爬虫:抓取微博上的热门话题和评论。
- 电商网站爬虫:抓取商品信息和价格,进行价格比较。
- 新闻网站爬虫:抓取最新新闻标题和链接,进行新闻聚合。
通过这些步骤,我们可以实现一个基本的搜索引擎爬虫,为学习网络爬虫和数据提取提供了一个实用的示例。
其他文章推荐
- 90道 编程题挑战:从基础到高级项目-CSDN博客
- 使用 PyQt5 和 Windows API 创建文件删除确认对话框-CSDN博客
- 使用Python和Selenium爬取QQ新闻热榜-CSDN博客
- Python 文件搜索程序详解与实现-CSDN博客
- python 数据结构与算法-CSDN博客
结论
通过本篇博客,读者能够掌握如何使用 Python 编写一个简单的百度搜索爬虫,并了解爬虫的基本流程。使用 requests
进行 HTTP 请求,利用 BeautifulSoup
解析网页内容,以及如何处理和提取有用的数据。这些技能是进行网页数据抓取和信息提取的基础,对进一步学习爬虫技术和数据分析有很大帮助。
总结
通过这篇博客,你可以掌握如何使用 Python 编写一个简单的百度搜索爬虫,并了解爬虫的基本流程。使用 requests
进行 HTTP 请求,利用 BeautifulSoup
解析网页内容,以及如何处理和提取有用的数据。这些技能是进行网页数据抓取和信息提取的基础,对进一步学习爬虫技术和数据分析有很大帮助。
希望这些信息对你有帮助!如果你有任何问题或需要进一步的帮助,请随时告诉我。😊
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj