python爬蟲獲取百度熱搜

jeanhua發表於2024-06-15
注:本篇學習需要python基礎

前言:在上篇中,我們學習了怎麼用python傳送網頁請求來獲取網站的原始碼,在這篇中,我們將進一步學習

本篇目標:利用python爬蟲獲取百度熱搜

第一步,用瀏覽器開啟百度熱搜網站

百度熱搜網址 https://top.baidu.com/board?tab=realtime
頁面如下:
image

第二步,按下F12鍵開啟瀏覽器開發者介面,找到熱搜文字元素

image

第三步,右鍵單擊文字元素複製Xpath

image

第四步,編寫程式碼

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名小男孩合力挪走擋路樹枝 

目標達成,在下一篇文章中,我們將進一步進階學習

相關文章