生活随笔
收集整理的這篇文章主要介紹了
某网站内容获取
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
準備工作
import re
import requests
import pandas
as pd
import time
頁面分析
直接get無法獲得任何信息, 我們采取另一種思路:
來到network, 查看ajax請求, 同時下拉搜索內容
可以看到, 當不斷下拉刷新內容時, 產生了形如https://m.weibo.cn/api/container/getIndex?containerid=100103type%3D1%26q%3D%E6%96%B0%E7%96%86%E6%97%85%E6%B8%B8&page_type=searchall&page=5的xhr文件, 且在當我們想要瀏覽新的內容時才會發送這個請求, 那么我們是否需要先手動下滑頁面再請求xhr文件?答案是否定的, 因為經常做爬蟲的人就會發現上述url有一個顯著的特征: page=5. 因此我們只需求改page中的數字即可.
實際上, 我們也可以先訪問這個url, 觀察是否存在著我們需要的內容.
顯然這是js代碼, 且非常混亂, 我們可以通過這個網站將js代碼格式化(在線js格式化).
將js內容復制到該網站并點擊格式化校驗、Unicode轉中文, 就可以得到格式化的js代碼
可以看到, 諸如此類的內容就表達了一位用戶的id、內容(text)、內容長度(textLength)等等.
Code
import re
import requests
import pandas
as pd
import time
headers
= {
'User-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
'Cookie' : 'SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W5Mjupe16Kiyb7vm281Dcv85NHD95QfSo.Neo2peKn0Ws4DqcjiKgLu9-DadJH0; SUB=_2A25MhkCXDeRhGeNI4lUT8S_Nwz-IHXVviWDfrDV6PUJbktCOLRDFkW1NS--oPUYVkqHq8aiZOlUnWJs3Mwsd7vcO; SSOLoginState=1635922120; WEIBOCN_FROM=1110006030; MLOGIN=1; BAIDU_SSP_lcr=http://localhost:8888/; _T_WM=25310073472; XSRF-TOKEN=ccf606; M_WEIBOCN_PARAMS=oid%3D4698870880408410%26luicode%3D10000011%26lfid%3D231522type%253D1%2526t%253D10%2526q%253D%2523%25E6%2596%25B0%25E7%2596%2586%25E6%2597%2585%25E6%25B8%25B8%2523',
'_xsrf' : 'ccf606'}
main
= "https://m.weibo.cn/api/container/getIndex?containerid=231522type%3D1%26t%3D10%26q%3D%23%E6%96%B0%E7%96%86%E6%97%85%E6%B8%B8%23&isnewpage=1&luicode=10000011&lfid=100103type%3D1%26q%3D%E6%96%B0%E7%96%86%E6%97%85%E6%B8%B8&page_type=searchall&page="
number
= []
url
= []
n
= 10
for i
in range(1, n
):url
.append
(main
+ str(i
))count
= 0
code
= []
URL
= []
NEW
= []
for Url
in url
:res
= requests
.get
(Url
, headers
=headers
)count
+= 1print("第{0}次請求, 頁面狀態碼:{1}".format(count
, res
.status_code
)) print("地址:{0}".format(Url
))code
.append
(res
.status_code
)URL
.append
(Url
)for i
in range(20):try:string
= res
.json
()["data"]['cards'][i
]["mblog"]["text"] pre
= re
.compile(u'[\u4e00-\u9fa5-\,\。]') res
= re
.findall
(pre
, string
) res1
=''.join
(res
) res1
.split
("-") newlist
= [i
for i
in res1
.split
("-") if i
!= ''] NEW
.append
(newlist
)print(newlist
)except:passtime
.sleep
(1.5)
data
= {"code":code
, "URL":URL
, "content": NEW
}
pd
= pd
.DataFrame
(data
)
pd
.to_excel
("D://Desktop//weibo.xlsx")
總結
以上是生活随笔為你收集整理的某网站内容获取的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。