手把手教你用Python爬取百度搜索结果并保存
众所周知,百度上直接搜索关键字会出来一大堆东西,时常还会伴随有广告出现,不小心就点进去了,还得花时间退出来,有些费劲。
- 作者: 崔艳飞 来源:Python爬虫与数据挖掘|2021-02-17 09:23
一、前言
众所周知,百度上直接搜索关键字会出来一大堆东西,时常还会伴随有广告出现,不小心就点进去了,还得花时间退出来,有些费劲。
最近群里有个小伙伴提出一个需求,需要获取百度上关于粮食的相关讲话文章标题和链接。正好小编最近在学习爬虫,就想着拿这个需求来练练手。我们都知道,对Python来说,有大量可用的库,实现起来并不难,动手吧。
二、项目目标
爬取百度上关键字为“粮食”的搜索结果,并保存,提交给客户,用于进一步分析我国粮食政策。
三、项目准备
软件:PyCharm
需要的库:json, requests,etree
四、项目分析
1)如何进行关键词搜索?
利用response库,直接Get网址获得搜索结果。网址如下:
- https://www.baidu.com/s?wd=粮食
2)如何获取标题和链接?
利用etree对原代码进行规范梳理后,通过Xpath定位到文章标题和href,获取标题和文章链接。
3)如何保存搜索结果?
新建txt文件,对搜索结果循环写入,保存即可。
五、项目实现
1、第一步导入需要的库
- import json
- import requests
- from lxml import etree
2、第二步用requests进行请求搜索
- headers = {
- "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36"
- }
- response = requests.get('https://www.baidu.com/s?wd=粮食&lm=1', headers=headers)
3、第三步对获取的源代码进行整理分析,通过Xpath定位需要的资源
- r = response.text
- html = etree.HTML(r, etree.HTMLParser())
- r1 = html.xpath('//h3')
- r2 = html.xpath('//*[@class="c-abstract"]')
- r3 = html.xpath('//*[@class="t"]/a/@href')
4、第四步把有用资源循环读取保存
- for i in range(10):
- r11 = r1[i].xpath('string(.)')
- r22 = r2[i].xpath('string(.)')
- r33 = r3[i]
- with open('ok.txt', 'a', encoding='utf-8') as c:
- c.write(json.dumps(r11,ensure_ascii=False) + '\n')
- c.write(json.dumps(r22, ensure_ascii=False) + '\n')
- c.write(json.dumps(r33, ensure_ascii=False) + '\n')
- print(r11, end='\n')
- print('------------------------')
- print(r22, end='\n')
- print(r33)
六、效果展示
1、程序运行结果,如下图所示:
2、保存为txt的文件最终结果如下图所示:
七、总结
本文介绍了如何利用Python对百度搜索结果进行爬取、保存,是一个小爬虫,这也是Python好玩的地方,有大量免费的库可用,能帮你实现各种需求。工作量大,学会用Python!
本文转载自微信公众号「Python爬虫与数据挖掘」,可以通过以下二维码关注。转载本文请联系Python爬虫与数据挖掘公众号。
【编辑推荐】
点赞 0
- 大家都在看
- 猜你喜欢
编辑推荐
- 24H热文
- 一周话题
- 本月获赞
- 坐在马桶上看算法:快速排序太厉害了,终于有人能把TCP/IP协议讲的明明白白了!花了一个星期,我终于把RPC框架整明白了!图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)TIOBE 2月榜单出炉,编程语言世界在过去几年中没有改变?为什么CTO、技术总监、架构师都不写代码,还这么牛?面向对象编程是计算机科学的最大错误凉凉,老板叫我开发一个简单的工作流引擎...
- 太厉害了,终于有人能把TCP/IP协议讲的明明白白了!花了一个星期,我终于把RPC框架整明白了!2月编程语言排行榜已出,你看出这点了吗?图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)TIOBE 2月榜单出炉,编程语言世界在过去几年中没有改变?6种微服务RPC框架,你知道几个?五大自动化测试的Python框架终于有人把Elasticsearch原理讲透了!
- 太厉害了,终于有人能把TCP/IP协议讲的明明白白了!花了一个星期,我终于把RPC框架整明白了!图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)6种微服务RPC框架,你知道几个?TIOBE 2月榜单出炉,编程语言世界在过去几年中没有改变?五大自动化测试的Python框架2月编程语言排行榜已出,你看出这点了吗?终于有人把Elasticsearch原理讲透了!
订阅专栏+更多
-
数据湖与数据仓库的分析实践攻略
助力现代化数据管理:数据湖与数据仓库的分析实践攻略共3章 | 创世达人6人订阅学习
-
云原生架构实践
新技术引领移动互联网进入急速赛道共3章 | KaliArch32人订阅学习
-
数据中心和VPDN网络建设案例
漫画+案例共20章 | 捷哥CCIE219人订阅学习
视频课程+更多
-
Prometheus企业级监控系统:零基础入门
讲师:张岩峰3463人学习过
-
python运维和开发实战-高级篇
讲师:先超2183人学习过
-
Elasticsearch分布式数据库与ELK大数据平台实
讲师:风哥7464人学习过
专题推荐+更多
- 精选博文
- 论坛热帖
-
订阅51CTO邮刊
点击这里查看样刊

51CTO服务号

51CTO官微