手把手教你用Python爬取百度搜索結(jié)果并保存
一、前言
眾所周知,百度上直接搜索關(guān)鍵字會出來一大堆東西,時常還會伴隨有廣告出現(xiàn),不小心就點進去了,還得花時間退出來,有些費勁。
最近群里有個小伙伴提出一個需求,需要獲取百度上關(guān)于糧食的相關(guān)講話文章標題和鏈接。正好小編最近在學習爬蟲,就想著拿這個需求來練練手。我們都知道,對Python來說,有大量可用的庫,實現(xiàn)起來并不難,動手吧。
二、項目目標
爬取百度上關(guān)鍵字為“糧食”的搜索結(jié)果,并保存,提交給客戶,用于進一步分析我國糧食政策。
三、項目準備
軟件:PyCharm
需要的庫:json, requests,etree
四、項目分析
1)如何進行關(guān)鍵詞搜索?
利用response庫,直接Get網(wǎng)址獲得搜索結(jié)果。網(wǎng)址如下:
https://www.baidu.com/s?wd=糧食
2)如何獲取標題和鏈接?
利用etree對原代碼進行規(guī)范梳理后,通過Xpath定位到文章標題和href,獲取標題和文章鏈接。
3)如何保存搜索結(jié)果?
新建txt文件,對搜索結(jié)果循環(huán)寫入,保存即可。
五、項目實現(xiàn)
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、第四步把有用資源循環(huán)讀取保存
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、程序運行結(jié)果,如下圖所示:
????
2、保存為txt的文件最終結(jié)果如下圖所示:
????
七、總結(jié)
本文介紹了如何利用Python對百度搜索結(jié)果進行爬取、保存,是一個小爬蟲,這也是Python好玩的地方,有大量免費的庫可用,能幫你實現(xiàn)各種需求。工作量大,學會用Python!
本文轉(zhuǎn)載自微信公眾號「Python爬蟲與數(shù)據(jù)挖掘」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Python爬蟲與數(shù)據(jù)挖掘公眾號。