一般來說爬取乙個**就是那麼幾步走
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...