知乎首頁爬蟲

2021-10-01 16:43:42 字數 2072 閱讀 5701

嘗試了一下知乎首頁爬蟲:

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都是登陸知乎的,原因是知乎的登陸...