爬蟲專欄10 ajax爬微博

2021-10-05 19:21:02 字數 1570 閱讀 6461

import requests

from urllib.parse import urlencode

from pyquery import pyquery as pq

base_url =

''# 這裡要換成對應ajax請求中的鏈結

headers =

# 不同於簡單的requests,只需要傳入客戶端資訊就好了,但是經過測試,只留下'user-agent'依舊可以執行

defget_page

(page)

: params =

url = base_url + urlencode(params)

try:

response = requests.get(url,headers=headers)

if response.status_code ==

200:

return response.json(

)# 解析內容為json返回

except requests.connectionerror as e:

print

('error'

,e.args)

#輸出異常資訊

defparse_page

(json)

:if json:

items = json.get(

'data'

).get(

'cards'

)for item in items:

item = item.get(

'mblog'

) weibo =

weibo[

'id'

]= item.get(

'id'

) weibo[

'text'

]= pq(item.get(

'text'))

.text(

)# 這裡面的文字內容又進行了一層解析,將正文裡面的html標籤去掉

weibo[

'attitudes'

]= item.get(

'attitudes_count'

) weibo[

'comments'

]= item.get(

'comments_count'

) weibo[

'reposts'

]= item.get(

'reposts_count'

)yield weibo

if __name__ ==

'__main__'

:# 本指令碼視窗下的程式名字就叫做main,且這樣寫在別的程式呼叫該指令碼檔案的函式時不會受到影響

for page in

range(1

,11):

json = get_page(page)

results = parse_page(json)

for result in results:

print

(result)

爬蟲之爬取微博

3忘記了包含yeild的函式生成器目的是可以作為乙個迭代物件 貼源 importrequests fromurllib.parseimporturlencode frompyqueryimportpyqueryaspq base url header defget page page,value p...

爬蟲專欄9 ajax爬取豆瓣

先定位到他的json資料頁面 不同的是他多出了param引數 補上就行,和json差別不大 同時,有些ajax進入後是網頁原始碼,所以需要重新利用正則或者lxml對網頁資訊進行提取,提取方法是一樣的 這個和json動態載入時類似的,但是這個可以利用json也可以利用ajax的param引數進行抓取 ...

Python爬蟲之微博評論爬取

import requests 請求 import time 時間 from fake useragent import useragent 隨機請求頭 import re 正則模組 登入微博,f12開啟瀏覽器抓包功能 直接攜帶cookie 引數請求即可 這個方法很簡單,但是只能爬取50頁左右,如果...