嘗試了一下知乎首頁爬蟲:
import re
import requests
from urllib import parse
首頁鏈結 =
headers =
resp = requests.get('', headers=headers)
# print(resp.text)
urls = re.findall('content="(question/\d+?)"', resp.text, re.s)
urls2 = re.findall('href="(/question/\d+/answer/\d+)"', resp.text, re.s)
x = len(urls)
for i in range(x):
urls[i] = re.sub(r'/question/\d+', '', urls[i])
url = urls[i] + urls2[i]
# print(url)
# resp = requests.get('question/355969351/answer/911683923', headers=headers)
# # print(resp.text)
# contennt = re.findall('"excerpt":"(.*?)"', resp.text, re.s)
# print(contennt)
#for i in range(10):
id = x + i*6 + 1
url = 'api/v3/feed/topstory/recommend?session_token=46796b9b57df0d43594dcc3c865270a8&deskt' \
'op=true&page_number=5&limit=6&action=down&after_id={}'.format(id)
resp = requests.get(url,headers=headers)
# print(resp.content.decode('raw_unicode_escape'))
r_urls3 =
urls3 = re.findall('"url":"("', resp.text, re.s)
# 有不是問答,但依舊會有brife且有id的,會導致問題鏈結不能與回答id對應,正則一定要加『answer』
urls4 = re.findall('"brief":".*?answer.*?(\d+?)}"', resp.text, re.s)
for u in urls3:
u = re.sub('api.|s', '', u)
s = len(urls4)
for i in range(s):
real_url = r_urls3[i] + '/answer/' + urls4[i]
real_url = re.sub('quetion', 'question', real_url)
# print(real_url)
print(len(首頁鏈結))
print(i)
# question/336203471/answer/930023039
# question/303859624/answer/856155303
說幾個有意思的點:
1,一定要有cookie,不然拿不到資料
2,首頁直接載入的五條或六條資料,不設反爬,直接在原始碼拿
3,後續資料依靠ajax載入,如果需要頁面資訊,其實可以直接從ajax拿,而不用取鏈結,ajax載入了鏈結,類似廣告,和一些非問答鏈結,需要處理和篩選。
4,如果直接在ajax拿對應文章的內容,需要
resp.content.decode('raw_unicode_escape')
re.sub('quetion', 'question', real_url)它把question寫成quetion,真的是。。。
鏈結都是可訪問的。
python 爬蟲 知乎
人生苦短,唯有python 是不是 寫多了自己就熟練了呢?人人網爬蟲模板,具體操作以後有機會再新增吧!coding utf 8 import urllib2 import urllib import cookielib import re def zhihubrower url,user,passw...
python 爬蟲 登入知乎
pytho3.4 requests.get request.post requests.session 1 通過瀏覽器f12開發者工具,找到登入時提交的表單以及請求的url 注意請求的url不是瀏覽器網域名稱框的url 因為知乎改了,現在不需要驗證碼了,所以中少了驗證碼的引數,不過 裡是有的 2 設...
Python 爬蟲模擬登陸知乎
在之前寫過一篇使用python爬蟲爬取電影天堂資源的部落格,重點是如何解析頁面和提高爬蟲的效率。由於電影天堂上的資源獲取許可權是所有人都一樣的,所以不需要進行登入驗證操作,寫完那篇文章後又花了些時間研究了一下python模擬登陸,網上關於這部分的資料很多,很多demo都是登陸知乎的,原因是知乎的登陸...