爬取知乎所有專欄文章

2021-10-02 05:28:07 字數 2481 閱讀 8603

一般來說爬取乙個**就是那麼幾步走

1.先使用瀏覽器逛一逛想爬取的**,找找規律

2.直接發乙個傻瓜式請求,試一下能不能獲取到想要的資料,萬一就得到了呢

3.不行的話,換一下請求頭中的user-agent欄位

這邊推薦大家乙個模組 – fake_useragent

安裝: pip install fake_useragent 直接使用pip安裝就可以

使用:匯入模組中的useragent類建立例項物件,再用物件去點乙個random屬性就可以了

ua = useragent()

headers =

這個模組使用簡單便捷,每次呼叫random屬性都會返回乙個隨機的請求頭

4.要是換頭還不行,把瀏覽器中的headers全複製來做乙個字典

5.要是還不行,那就是登入狀態之類的問題了,開啟瀏覽器的設定檢視一下哪個cookie是用於儲存當前**登入狀態的

6.還不行,試試**ip

7.再不行,那就是js加密了

當然了,不管怎麼處理,一定要先看看人家瀏覽器發的是啥請求,是get還是post,不然只能是一步錯步步錯

import requests

from lxml import etree

import mysqldb

conn = mysqldb.connect(

user =

'root'

, password =

'123456'

, host =

'localhost'

, db =

'spider'

, charset =

'utf8'

, port =

3306

)cursor = conn.cursor(

)url =

''headers =

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

.json(

)for i in resp[

'data']:

# 所有專欄

)# 當前專欄下的所有文章

for j in resp[

'data']:

# 遍歷取出當前專欄下的所有文章標題和url

title = j[

'title'

] article_url = j[

'url'

] resp = requests.get(url=article_url, headers=headers)

.text

html = etree.html(resp)

column_name = html.xpath(

'//a[@class="columnlink columnpageheader-titlecolumn"]/text()')[

0]content_list = html.xpath(

'//div[@class="richtext ztext post-richtext"]//text()'

) content =

''for k in content_list:

content += k

sql =

'insert into zhihu_zhuanlan(column_title, article_title, content) values(%s, %s, %s)'

rows = cursor.execute(sql,

[column_name, title, content]

)if rows:

conn.commit(

)print

('成功存入資料庫'

)except

:print

('出錯了'

)continue

爬取11088個知乎專欄,打破發現壁壘

去uc是不可能去uc的,這輩子都不可能去uc的。deserts x 上回我用gephi繪製了知乎374名10萬 關注的大v間相互關注情況,因為涉及25090條關注資料,最後成果圖不算理想,但也能簡單窺見大v生態圈的面貌,詳情見於 374名10萬 知乎大v 一 相互關注情況 論理這回應該繼續對374名...

python動態爬取知乎 python爬取微博動態

在初學爬蟲的過程中,我們會發現很多 都使用ajax技術動態載入資料,和常規的 不一樣,資料是動態載入的,如果我們使用常規的方法爬取網頁,得到的只是一堆html 沒有任何的資料。比如微博就是如此,我們可以通過下滑來獲取更多的動態。對於這樣的網頁該如何抓取呢?我們以微博使用者動態為例,抓取某名使用者的文...

知乎資料爬取及儲存

import requests from pymysql conn import mysql connect url 分析所有請求後發現上面的url可以直接獲取所需資料的json檔案,兩個引數分 別為offset,limit。其中offset控制起始資料序號,limit控制本次資料數量 經測試off...