手把手教你用Python爬取百度搜索结果并保存

开发 后端
众所周知,百度上直接搜索关键字会出来一大堆东西,时常还会伴随有广告出现,不小心就点进去了,还得花时间退出来,有些费劲。

[[381959]]

 一、前言

众所周知,百度上直接搜索关键字会出来一大堆东西,时常还会伴随有广告出现,不小心就点进去了,还得花时间退出来,有些费劲。

最近群里有个小伙伴提出一个需求,需要获取百度上关于粮食的相关讲话文章标题和链接。正好小编最近在学习爬虫,就想着拿这个需求来练练手。我们都知道,对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爬虫与数据挖掘公众号。

 

责任编辑:武晓燕 来源: Python爬虫与数据挖掘
相关推荐

2021-05-08 08:04:05

Python爬取素材

2021-08-09 13:31:25

PythonExcel代码

2020-03-08 22:06:16

Python数据IP

2022-10-19 14:30:59

2021-05-10 06:48:11

Python腾讯招聘

2021-12-11 20:20:19

Python算法线性

2021-02-02 13:31:35

Pycharm系统技巧Python

2021-02-06 14:55:05

大数据pandas数据分析

2021-02-04 09:00:57

SQLDjango原生

2011-03-28 16:14:38

jQuery

2022-08-04 10:39:23

Jenkins集成CD

2021-05-17 21:30:06

Python求均值中值

2009-04-22 09:17:19

LINQSQL基础

2021-01-21 09:10:29

ECharts柱状图大数据

2021-01-08 10:32:24

Charts折线图数据可视化

2021-07-03 09:04:22

XPathPython免费代理IP

2012-01-11 13:40:35

移动应用云服务

2021-08-02 23:15:20

Pandas数据采集

2021-03-02 09:05:13

Python

2021-03-23 09:05:52

PythonExcelVlookup
点赞
收藏

51CTO技术栈公众号