微博主要分為網頁端、手機端和移動端。微博網頁版反爬太厲害,因此選擇爬取手機端。詞頻分析:
在開發者工具下,network-xdr下找到以下資訊:
此外,還需要對比request url的組成,找出翻頁規律:
request url: url:
經過對比發現,翻頁時的兩個關鍵資訊為max_id和max_id_type,只要找到這兩個資訊,就可以對url進行拼接,從而實現多次爬取。這兩個資訊可以在之前返回的json檔案中的preview找到。
接下來是爬蟲程式的設計:
# -*- coding: utf-8 -*-
import requests
import time
import os
import csv
import sys
import json
from bs4 import beautifulsoup
import importlib
importlib.
reload
(sys)
# 要爬取熱評的起始url
url =
''# cookie ua要換成自己的
headers =
defget_page
(max_id, id_type)
: params =
try:
r = requests.get(url, params=params, headers=headers)
if r.status_code ==
200:
return r.json(
)except requests.connectionerror as e:
print
('error'
, e.args)
defparse_page
(jsondata)
:if jsondata:
items = jsondata.get(
'data'
) item_max_id =
item_max_id[
'max_id'
]= items[
'max_id'
] item_max_id[
'max_id_type'
]= items[
'max_id_type'
]return item_max_id
defwrite_csv
(jsondata)
: datas = jsondata.get(
'data'
).get(
'data'
)for data in datas:
created_at = data.get(
"created_at"
) like_count = data.get(
"like_count"
) source = data.get(
"source"
) floor_number = data.get(
"floor_number"
) username = data.get(
"user"
).get(
"screen_name"
) comment = data.get(
"text"
) comment = beautifulsoup(comment,
'lxml'
).get_text(
) writer.writerow(
[username, created_at, like_count, floor_number, source,
json.dumps(comment, ensure_ascii=
false)]
)# 存為csv
path = os.getcwd()+
"/weibocomments.csv"
csvfile =
open
(path,
'w',encoding =
'utf-8'
)writer = csv.writer(csvfile)
writer.writerow(
['usename'
,'time'
,'like_count'
,'floor_number'
,'sourse'
,'comments'])
maxpage =
50#爬取的數量
m_id =
0id_type =
0for page in
range(0
, maxpage)
:print
(page)
jsondata = get_page(m_id, id_type)
write_csv(jsondata)
results = parse_page(jsondata)
time.sleep(1)
m_id = results[
'max_id'
] id_type = results[
'max_id_type'
]
停詞表採用的是哈工大停詞表。 Python爬蟲之微博評論爬取
import requests 請求 import time 時間 from fake useragent import useragent 隨機請求頭 import re 正則模組 登入微博,f12開啟瀏覽器抓包功能 直接攜帶cookie 引數請求即可 這個方法很簡單,但是只能爬取50頁左右,如果...
Python爬取新浪微博評論資料,寫入csv檔案中
操作步驟如下 2.開啟m.weibo.cn 3.查詢自己感興趣的話題,獲取對應的資料介面鏈結 4.獲取cookies和headers coding utf 8 import requests import csvimport osbase url cookies headers path os.ge...
自動獲取cookie,爬取新浪微博熱門評論
目錄 一 前言 二 網盤 selenium僅僅用於獲取cookie,實際爬取將直接使用requests請求,以保證爬取效率 話不多說,也不複雜,直接上 了,關鍵的地方有注釋 import requests import selenium from selenium import webdriver ...