點擊上方“Python爬蟲與數據挖掘”,進行關注
回覆“書籍”即可獲贈Python從入門到進階共10本電子書
一、前言
大家好,我是崔豔飛。衆所周知,百度上直接搜索關鍵字會出來一大堆東西,時常還會伴隨有廣告出現,不小心就點進去了,還得花時間退出來,有些費勁。
最近羣裏有個小夥伴提出一個需求,需要獲取百度上關於糧食的相關講話文章標題和鏈接。正好小編最近在學習爬蟲,就想着拿這個需求來練練手。我們都知道,對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!
最後需要本文項目代碼的小夥伴,請在公衆號後臺回覆“糧食”關鍵字進行獲取,如果在運行過程中有遇到任何問題,請隨時留言或者加小編好友,小編看到會幫助大家解決bug噢!
------------------- End -------------------
往期精彩文章推薦:
歡迎大家點贊,留言,轉發,轉載,感謝大家的相伴與支持
想加入Python學習羣請在後臺回覆【入羣】
萬水千山總是情,點個【在看】行不行
/今日留言主題/
隨便說一兩句吧~~
本文分享自微信公衆號 - Python爬蟲與數據挖掘(crawler_python)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。