Python用xpath爬取資料返回空列表解決

2021-09-02 20:22:56 字數 2689 閱讀 7543

筆者以爬取2023年aaai人工智慧頂會**元資料為例。其中包括標題(title)和摘要(abstract)等字段

首先需要檢視該網頁是否可以爬取,通過在url後加入/robots,txt可以檢視。url:2018aaai的第一篇**元資料頁面 頁面如下:

筆者通過谷歌瀏覽器選取上圖紅框內容的xpath如下:

from lxml import etree

import requests

url =

''response = requests.

get(url)

html = response.content

data = etree.

html

(html)

.xpath

('//*[@id="content"]/table/tbody/tr[4]/td[4]/text()'

)print

(data)

返回結果是乙個空列表

經查詢得知原因是:瀏覽器會對html文字進行一定的規範化,所以會自動在路徑中加入tbody,導致讀取失敗,在此處直接在路徑中去除tbody即可。

正確xpath:

data = etree.

html

(html)

.xpath

('//*[@id="content"]/table/tr[4]/td[4]/text()'

)

url:2018aaai的第一篇**頁面

筆者通過谷歌瀏覽器選取上圖紅框內容的xpath如下:

from lxml import etree

import requests

url =

''response = requests.

get(url)

xml = response.content

data = etree.

html

(xml)

.xpath

('//*[@id="abstract"]/div/text()'

)

返回結果是乙個空列表1.首先檢視是否成功獲取了xml可見成功獲取了xml,說明請求伺服器成功獲得響應。但仔細檢視獲取的xml發現裡面沒有相關的摘要和作者相關資訊。肯定也就無法通過xpath獲取摘要文字。逐步檢視xml發現裡面有一條url和請求的url很相似,點進去發現兩個url是同乙個頁面。

發現第二個url路徑中多了乙個*****字段。

''

''

嘗試請求第二個url後發現返回了完整的包含網頁摘要、作者標題等資訊的xml,遂成功爬取到該網頁的摘要。

建議獲取請求得到的響應用requests.content返回二進位制響應內容,使用requests.text可能會出現編碼宣告不支援問題

以模擬瀏覽器登入

python爬取基金 Python 爬基金資料

coding utf 8 importjsonimportrequestsfrom lxml importetreefrom htmlparser importhtmlparserfrom pymongo importmongoclient client mongoclient localhost ...

python爬蟲 用xpath爬豆瓣電影

步驟 將目標 下的頁面抓取下來 將抓取下來的資料根據一定規則進行提取 具體流程 將目標 下的頁面抓取下來 1.倒庫 import requests2.頭資訊 有時候可不寫 4.返回響應 response requests.get url,headers headers 響應 print respon...

datawhale爬蟲(xpath爬取丁香網評論)

1.xpath基礎學習 前面我們介紹了 beautifulsoup 的用法,這個已經是非常強大的庫了,不過還有一些比較流行的解析庫,例如 lxml,使用的是 xpath 語法,同樣是效率比較高的解析方法。如果大家對 beautifulsoup 使用不太習慣的話,可以嘗試下 xpath。xpath 是...