分頁請求json數據_Python爬蟲入門教程 28-100 虎嗅網文章數據抓取 pyspider

041f3e3a8cc3db6fc6be61d0fe624a28.png

1. 虎嗅網文章數據----寫在前面

今天繼續使用pyspider爬取數據,很不幸,虎嗅資訊網被我選中了,網址為 https://www.huxiu.com/ 爬的就是它的資訊頻道,本文章僅供學習交流使用,切勿用作其他用途。

常規操作,分析待爬取的頁面

拖拽頁面到最底部,會發現一個加載更多按鈕,點擊之后,抓取一下請求,得到如下地址

427830fb147ebbb6175bff1317431486.png

2. 虎嗅網文章數據----分析請求

查閱該請求的方式和地址,包括參數,如下圖所示

e3bea4df6f34fc2d5847ba1fa2a85ed9.png

得到以下信息 1. 頁面請求地址為:https://www.huxiu.com/v2_action/article_list 2. 請求方式:POST 3. 請求參數比較重要的是一個叫做page的參數

我們只需要按照上面的內容,把pyspider代碼部分編寫完畢即可。 on_start 函數內部編寫循環事件,注意到有個數字2025這個數字,是我從剛才那個請求中看到的總頁數。你看到這篇文章的時候,這個數字應該變的更大了。

@every(minutes=24 * 60)def on_start(self):for page in range(1,2025):print("正在爬取第 {} 頁".format(page))self.crawl('https://www.huxiu.com/v2_action/article_list', method="POST",data={"page":page},callback=self.parse_page,validate_cert=False)

頁面生成完畢之后,開始調用parse_page 函數,用來解析 crawl() 方法爬取 URL 成功后返回的 Response 響應。

@config(age=10 * 24 * 60 * 60)def parse_page(self, response):content = response.json["data"]doc = pq(content)lis = doc('.mod-art').items()data = [{'title': item('.msubstr-row2').text(),'url':'https://www.huxiu.com'+ str(item('.msubstr-row2').attr('href')),'name': item('.author-name').text(),'write_time':item('.time').text(),'comment':item('.icon-cmt+ em').text(),'favorites':item('.icon-fvr+ em').text(),'abstract':item('.mob-sub').text()} for item in lis ] return data

最后,定義一個 on_result() 方法,該方法專門用來獲取 return 的結果數據。這里用來接收上面 parse_page() 返回的 data 數據,在該方法可以將數據保存到 MongoDB 中。

# 頁面每次返回的數據            def on_result(self,result):if result:self.save_to_mongo(result)            # 存儲到mongo數據庫def save_to_mongo(self,result):df = pd.DataFrame(result)  content = json.loads(df.T.to_json()).values()if collection.insert_many(content):print('存儲數據成功')# 暫停1stime.sleep(1)

好的,保存代碼,修改每秒運行次數和并發數

c9ab8b57fb42957c8b045a9ba0174de7.png

點擊run將代碼跑起來,不過當跑起來之后,就會發現抓取一個頁面之后程序就停止了, pyspider 以 URL的 MD5 值作為 唯一 ID 編號,ID 編號相同,就視為同一個任務, 不會再重復爬取。

GET 請求的分頁URL 一般不同,所以 ID 編號會不同,能夠爬取多頁。 POST 請求的URL是相同的,爬取第一頁之后,后面的頁數便不會再爬取。

解決辦法,需要重新寫下 ID 編號的生成方式,在 on_start() 方法前面添加下面代碼即可:

def get_taskid(self,task):return md5string(task['url']+json.dumps(task['fetch'].get('data','')))

基本操作之后,文章入庫

73b647ed1165acc362f5f62191a05510.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532148.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532148.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532148.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

bootstrap 導航菜單 折疊位置_教大家如何編寫一個網頁導航條

導航條簡單地說就是對你整個網站模塊的簡單介紹,你可以直接點擊導航條某一個按鈕或板塊便可進入其相應的界面,如:網頁、新聞、貼吧等 。在企業網站上,導航條上常見的有:產品介紹,公司簡介,最新產…

福建省高等學校非計算機考試大綱,福建省高等學校計算機應用水平等級考試三級(偏軟)考試大綱...

福建省高等學校計算機應用水平等級考試三級(偏軟)考試大綱2007年04月13日 星期五 9:55I、考試目的本考試考查考生以下知識與能力:1.具有較寬的計算機系統基礎知識;2.掌握數據結構的基本類型、典型算法及其應用;3&#…

python擬合函數_Python-最小二乘法曲線擬合

行文思路:最小二乘法原理介紹 利用 leastsq() 函數進行最小二乘法擬合 擬合注意事項 利用curve_fit 進行最小二乘法擬合 總結: 參考文獻 實現代碼 一,最小二乘法擬合 最小二乘法是一種數學優化技術,它通過最小化誤差的平方和尋找數…

計算機網絡提高網絡安全意識,提升網絡安全意識 共創清朗網絡環境

為增強公眾網絡安全意識,提高網絡安全防護技能。近期,徐家營街道圍繞“網絡安全為人民、網絡安全靠人民”活動主題,組織開展了“2020國家網絡安全宣傳周”活動,保障用戶合法權益,維護國家網絡安全。一、廣泛宣傳引導。…

base cap 分布式_干貨分享:基于本地消息表的分布式事務解決方案總結

前段時間學習了分布式事務的幾種方案,下面主要總結下基于本地消息表實現可靠消息最終一致性的分布式事務方案。1,什么是分布式事務?在傳統架構中往往是一個單體架構,一個系統就對應一個war包,然后這個系統也只有一個數…

google protobuf_protobuf 指南

簡介安裝語言定義特殊指令定義服務JSON 支持選項生成代碼基礎類型更新 messageGolang 下使用參考簡介Protocol Buffers 是 google 出品的一種數據交換格式, 縮寫為 protobuf.主要介紹 proto3 版本和 Golang 下的使用.安裝protobuf 分為編譯器和運行時兩部分. 編譯器直接使用預編…

計算機無法裝補丁,電腦無法安裝kb4012212補丁如何處理|電腦無法安裝kb4012212補丁的處理方法...

最近,不少用戶的電腦都被《永恒之藍》病毒侵襲,因此微軟官方推出了預防補丁 — kb4012212,正常系統只要安裝該補丁就能避免電腦遭到傷害。不過,有用戶反饋自己遇到了電腦無法安裝kb4012212補丁的情況,該怎么辦呢&#…

shell181網格劃分_ANSYS中SHELL181單元理解和參數詳解?-

頂部和底部的平均值不合適的時候,你應該用這個選項來得到正確的中見面的結果(薄膜結果);例子中包含黑線性材料特性的中間面應力、應變 ,以及在包含諸如譜分析等測長操作的模態疊加之后的中間面結果。 KEYOPT(9) 1 用來從用戶子程序中讀取初始厚度數據。…

使用計算機繪制景物圖像的兩個主要步驟是,計算機11考試.doc

文檔介紹:第五章[4]. 一張CD盤片上存儲的立體聲高保真全頻帶數字音樂約可播放一小時,則其數據量大約是______。A、800MBB、635MBC、400MBD、1GB[6]. 衛星數字電視和新一代數字視盤DVD采用______作為數字視頻壓縮標準。MPEG-2 | MPEG2[10]. 聲卡在計算機中用于完成聲…

mysql在哪里寫代碼_[譯] 如何寫好 Go 代碼

原文:https://scene-si.org/2018/07/24/writing-great-go-code/我寫了多年的 Go 微服務,并在寫完兩本關于 (API Foundations in Go 和 12 Factor Applications with Docker and Go) 主題的書之后,有了一些關于如何寫好 Go 代碼的想法但首先&a…

學畫畫軟件app推薦_路由器管理軟件哪個好?6款路由器管理APP推薦_軟件評測

無限網絡應用越來越廣泛,由此應運而生了許多可以蹭網的軟件,家里的網速突然變慢了,也許就是隔壁的小哥哥小姐姐在蹭網絡,那么如何避免被蹭網?今天小編給各位小伙伴推薦幾款路由器管理軟件,發現網絡變慢了&a…

408計算機考研 各科題目題號,2021考研408計算機專業基礎綜合數據結構試題特點分析...

2021考研408計算機專業基礎綜合數據結構試題特點分析2021考研初試結束后,新東方在線考研網為各位考研考生梳理"2021考研408計算機專業基礎綜合數據結構試題特點分析"內容,同時新東方在線考研各研究院院長針對2021考研各科目試題變化及難度進行…

各個圖標的意思_冬奧體育圖標設計團隊負責人林存真:每一個圖標要畫100稿以上...

林存真中央美術學院設計學院副院長、北京冬奧組委文化活動部形象景觀藝術總監、北京冬奧會體育圖標設計團隊負責人。12月31日晚,北京2022年冬奧會和冬殘奧會體育圖標正式發布。在體育圖標發布前夕,新京報記者采訪了北京冬奧會體育圖標設計團隊的負責人&a…

delphi制作上下開幕效果_2019中超聯賽揭幕戰在深圳舉行 現場開幕式亮點多多

3月2日晚,2019中超聯賽開幕式在深圳大運中心體育場舉行。隨著中國足協黨委書記杜兆才正式宣布2019年中超聯賽開幕,以“超精彩”為口號的2019新賽季中超聯賽正式打響。本賽季中超聯賽是出臺“注資帽”、“薪酬帽”、“獎金帽”、“轉會帽”之后的第一個賽…

ae正在發生崩潰_AE錯誤:正在發生崩潰的解決方法,原創問題解決方案

AE在使用過程中,可能會出現一些問題。有的問題是莫名其妙出現。例如剛剛還在正常使用AE軟件,下一次再打開的時候就會出現問題。今天給大家說的是如何去解決after effects錯誤:正在發生崩潰這個問題 。該問題所提供的解決方法為實際操作過,并成功解決。所以才寫出來給大家提…

計算機二級公共,計算機二級公共基礎知識

計算機二級公共基礎知識計算機二級考試包括計算機基礎知識。雖然分值不高但是我們還是要把握好每一分。下面百分網小編整理了相關計算機二級公共基礎知識,希望大家喜歡。計算機二級公共基礎知識1.1棧和隊列1、棧及其基本運算棧是限定在一端進行插入與刪除運算的線性…

echarts map 點擊地圖區域變色_繪制炫酷的地圖,不只是pyecharts.map!

導讀:地圖可視化是一種非常直觀的數據分析結果展現形式,python有很多可視化庫可以實現,pyecharts就是很多python愛好者喜愛的實現地圖可視化方法之一。不可否認,pyecharts繪制的地圖實現方便、圖形美觀而且支持交互,但…

金蝶kis專業版公網訪問_金蝶KIS云專業版—【賬務處理】進階操作101問

對KIS專業版【賬務處理】模塊日常操作之外的各種問題進行回答,幫助老師們快速進階此模塊的操作,提高軟件的便利性。1.專業版資產負債表如何移動表頁位置?【操作步驟】 1、單擊【報表與分析】-【資產負債表】;2、單擊左上角菜單欄【…

奧鵬東師計算機應用基礎18,免費在線作業答案奧鵬東師計算機應用基礎15秋在線作業1試卷及答案(1)...

奧鵬東師計算機應用基礎15秋在線作業1試卷及答案(1)一、單選題(共25道試題,共62.5分。)1.在Excel 中保存的工作簿默認的文件擴展名是()。A. XLSB. DOCC. DBFD. TXT正確答案:A2.中文Windows 2000的“桌面”是指()。A. 整個屏幕B. 某個窗口2015奧鵬作業答案…

es集群搭建_滴滴Elasticsearch 集群跨版本升級與平臺重構之路

前不久,滴滴ES團隊將維護的30多個ES集群,3500多個ES節點,8PB的數據,從2.3.3跨大版本無縫升級到6.6.1。在對用戶查詢寫入基本零影響和改動的前提下,解決了ES跨大版本協議不兼容、文件格式不兼容、mapping不兼容等難題&a…