用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

來獲取,而閱讀數則要麻煩些,是第三個

通過以下代碼就可以獲取到以上到相關信息:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

上述代碼就是主要的獲取相關信息的邏輯,因為閱讀數沒有唯一id,或者 class ,所有可以通過 find_next_sibling 來獲取兄弟節點;

接下來就對獲取到到文章進行處理,如按照閱讀數大於等於1000過濾文章,並按照閱讀數從高到低低排序,並且寫到文件中:

首先要定義一個文章類,用來表示文章的相關信息,如下:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

之後,定義文章的處理類 OschinaArticle ,相關處理邏輯在該類中實現:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

接下來獲取 BeautifulSoup 對象:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

之後,通過 BeautifulSoup 來解析 HTML 頁面,獲取文章相關信息,之後,根據相關信息創建文章對象,放到集合中進行返回:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

因為文章的閱讀數如果超過 1000 的話,就用 K 來表示,為了在後面篩選指定閱讀數的文章,所以需要進行處理,把 K 轉換為 1000,代碼如下:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

接下來就是文章根據閱讀數進行篩選和排序了,篩選出閱讀數大於等於指定值並且按照閱讀數從高到低排序,代碼如下:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

以上就可以獲取到我們想要的文章信息了,此外,我們可以把信息寫到文件文件中,代碼如下:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

之後,把上面的方法整合在一起,代碼如下:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

main 方法測試一下,地址輸入:https://www.oschina.net/blog?classification=428640, 文章閱讀數要大於等於1000

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

控制檯日誌打印如下:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

寫入到文件中的內容如下:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

你以為到這裡就完了嗎,no, no, no.............,通過上述方式只能獲取到首頁的文章,如果想獲取更多的文章怎麼辦?開源中國的博客文章列表沒有分頁,是通過滑動鼠標滾輪來獲取更多的頁,可是人家的地址導航欄卻沒有絲毫沒有變動,但是可以通過 F12 來看呀,按 F12 後,通過 NetWork 來查看相關的請求和響應情況:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

通過滾動幾下鼠標滾輪之後,可以發現請求的 URL 還是有規律的:

https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=2&type=ajaxhttps://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=2&type=ajaxhttps://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=3&type=ajaxhttps://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=4&type=ajaxhttps://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=5&type=ajax

可以看到除了 p 的參數值不同的話,其他的都相同,p 就是分頁標識,p=2就表示第二頁,p=3就等於第三頁,以此類推,就可以獲取到更多的文章啦:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

測試:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

日誌控制檯打印如下:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

寫到文件中如下:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

可以看到,在 1-20 頁中,閱讀數大於等 1000 的文章有 114 篇,之後就可以 copy URL 到地址欄進行閱讀啦....................

完整代碼如下:

文章實體類:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

OschinaArticle 處理邏輯類:

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章

用Python定向抓取某大型網站上閱讀數大於 1000+ 的優質文章


分享到:


相關文章: