注:本篇學習需要python基礎
前言:在上篇中,我們學習了怎麼用python傳送網頁請求來獲取網站的原始碼,在這篇中,我們將進一步學習
本篇目標:利用python爬蟲獲取百度熱搜
第一步,用瀏覽器開啟百度熱搜網站
百度熱搜網址 https://top.baidu.com/board?tab=realtime
頁面如下:
第二步,按下F12鍵開啟瀏覽器開發者介面,找到熱搜文字元素
第三步,右鍵單擊文字元素複製Xpath
第四步,編寫程式碼
import requests
from lxml import etree
# 傳送HTTP請求獲取網頁內容
url = 'https://top.baidu.com/board?tab=realtime'
response = requests.get(url)
# 解析網頁程式碼
doc = etree.HTML(response.text)
# 尋找Xpath結果
result = doc.xpath(r'//*[@id="sanRoot"]/main/div[2]/div/div[2]/div[2]/div[2]/a/div[1]/text()') #這裡貼上複製下來的xpath
# 列印結果
print(result[0])
結果如下:
00後女生成為上市公司總裁
我們成功獲取到了第一個熱搜,但是我們想要全部的熱搜怎麼辦?
於是我們繼續複製第二個熱搜的xpath,與第一個對比
第一個 //*[@id="sanRoot"]/main/div[2]/div/div[2]/div[ 2 ]/div[2]/a/div[1]/text()
第二個 //*[@id="sanRoot"]/main/div[2]/div/div[2]/div[ 3 ]/div[2]/a/div[1]/text()
我們發現中間有一個數字不同,因此發現規律,接下來我們改進程式碼
import requests
from lxml import etree
# 傳送HTTP請求獲取網頁內容
url = 'https://top.baidu.com/board?tab=realtime'
response = requests.get(url)
# 解析網頁程式碼
doc = etree.HTML(response.text)
# 拼接xpath獲取結果
for i in range(1,12):
xpath = '//*[@id="sanRoot"]/main/div[2]/div/div[2]/div['+str(i)+']/div[2]/a/div[1]/text()'
res = doc.xpath(xpath)
# 列印結果
print(str(i)+":"+res[0])
結果如下:
1: 中國為何始終屬於“全球南方”
2: 00後女生成為上市公司總裁
3: 菲律賓“坐灘”軍艦有多毒
4: 應對高溫“渴”不容緩
5: 浙傳畢業大片 這知識學了是真用
6: 大學生39天減重近20斤後“猝死”
7: 內蒙古一停工寫字樓內發現遺體
8: 四級結束 已老實
9: 棚改小面積能換更大平方?謠言
10: 李開復:對中國大模型DAU很失望
11: 4名小男孩合力挪走擋路樹枝
目標達成,在下一篇文章中,我們將進一步進階學習