python 爬蟲之獲取標題和連結

datehoer發表於2020-11-27

最近在oschina論壇裡發了一些文章,然後呢,今天主要是沒有什麼內容釋出了,所以準備發個小程式碼。

爬取一下我的oschina論壇內的連結和標題,非常簡單,非常容易。

先上程式碼

from requests_html import HTMLSession
session = HTMLSession()
url = “https://my.oschina.net/u/4798232" r = session.get(url)
for i in range(1, 12):
i = str(i)
urlxpath = ‘//*[@id=”newestBlogList”]/div[1]/div[‘+i+’]/div/a’
bt = r.html.xpath(urlxpath, first=True).text
c = urlxpath+‘/@href’
link = r.html.xpath(c, first=True)
a = “原”
if bt.find(a) == -1:
print(bt)
print(link)
else:
print(bt.replace(a, “”))
print(link)

首先呢,這個是通過xpath來進行操作的,具體如何複製xpath可以看我的zjzdmc.top/jsfx/47.html這篇文章,裡面有動圖。

然後匯入什麼庫啥的,都是老生常談的了,在a標籤中,你複製的xpath為//*[@id=”newestBlogList”]/div[1]/div[‘+i+’]/div/a這個,然後呢,我們獲取標題的話,加上.text這個屬性,就會變成文字了,而其中的文字我們可以看f12內的內容,發現其實只有標題,而我們如果需要連線的話,只需要加上這個/@href即可獲取連結了。不過目前其實沒有找到更好的獲取所有文字序列的方法,所以我們直接看最前面的文章id和最後一篇文章的id,記錄下來即可。之後我們只需要遍歷一下1-12的值即可,然後給字串新增變數的方法為字串+變數+字串即可’//*[@id=”newestBlogList”]/div[1]/div[‘+i+’]/div/a’如文字所示,即可獲取所有文章的標題了,然後給之前定義的變數urlxpath後面新增上/@href後,即可獲取改xpath內的連結了,之後輸出即可了。
不過其實一開始確實遇到了些小問題,比如說我獲取xpath的時候發現有的文章的xpath,裡面的div多了一個[1],多了一個引數,讓我非常困惑,因為就這一個有這個引數,但是後來我嘗試了一下,沒有新增這個[1]發現還是可以獲取該文章的內容,所以其實遇到問題還是要自己嘗試的。

之後還有一個小問題,就是之前獲取標題的時候,後面需要通過.text變成文字,而獲取連結的時候,並不需要的,直接就能輸出那個值了。link = r.html.xpath(c, first=True)所以我後面的link並沒有加.text了。

可以通過json來將標題和連結儲存在檔案內,亦或者通過open、write來寫入到txt檔案內,然後可以通過讀取來獲取所有的連結,之後查詢一下文章內的內容的xpath就可以獲取所有的文章內容了。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章