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頁左右,如果...