微博爬蟲python 微博爬蟲 python

2021-10-11 10:00:21 字數 3572 閱讀 8851

本文爬取的是m站的微博內容,基於python 2.7

一、 微博內容爬取

1.要爬取的微博首頁**

2.手機微博是看不到翻頁,是一直往下載入的,但是其json格式的資料仍然以翻頁的形式呈現。

3.開啟開發者工具,向下翻頁面,可以在network下的xhr的響應檔案中,找到json檔案的**。

如:通過分析發現每個json頁面是有規律的,即前面的內容都一樣,只是後面的頁碼不同;每個json頁面的格式如下:

知道json頁面的組成規律,我們就可以爬蟲了!!!

4.微博內容爬取

**如下:

# -*- coding: utf-8 -*-

import requests

import re

from fake_useragent import useragent

import pandas as pd

ua = useragent()

headers = {

'user-agent':ua.random, # ua.random是隨機生成乙個user-agent

'host': 'm.weibo.cn',

'referer': '',

def writeincsv(list):

df.to_excel("content.xlsx", encoding="utf_8_sig", index=false)

def getmblogcontent():

list =

bsae_url = ''

for p in range(0, 149):

try:

url = bsae_url + p.__str__()

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

jsondata = resp.json()

data = jsondata.get('data').get('cards') # cards裡包含此頁面的所有微博內容

print p

for d in data: # data是列表型別

try:

scheme = d['scheme']

mblog = d['mblog'] # i是字典型別

created_at = mblog['created_at'] # mblog也是頁面裡的乙個容器名字,乙個mblog表示乙個微博

id = mblog['idstr']

text = re.sub(u"\\<.>", "", mblog['text']) # 去除<>標籤裡的內容

print text

reposts_count = mblog['reposts_count']

comments_count = mblog['comments_count']

attitudes_count = mblog['attitudes_count']

except:

print "error"

except:

print "開啟頁面錯誤"

return list

print "ok"

list = getmblogcontent()

writeincsv(list)

5.**說明:

(1)本**總共用了兩個try。第乙個try是為了跳過打不開的json頁面;第二個try是為了跳過「mblog」內容為的字典,最開始沒有加第2 try,老是出錯,後來發現是因為有些「mblog」裡並沒有內容,是空的。

1.從上面的json資料頁面獲取欄位idstr,即微博id。

從位址可以獲取一條微博的手機頁面。

格式:2.從

格式:格式:

# -*- coding: utf-8 -*-

import requests

import re

from fake_useragent import useragent

import pandas as pd

ua = useragent()

headers = {

'user-agent': ua.random, # ua.random是隨機生成乙個user-agent

'host': 'm.weibo.cn',

'referer': '',

def writeincsv(list):

df.to_excel("comment.xlsx", encoding="utf_8_sig", index=false)

def getonepagecomment(mblog_id,data,hot_data):

for i in data:

text = re.sub(u"\\<.>", "", i['text']) # 去除<>標籤裡的內容

like_counts = i['like_counts']

user_id = i['user']['id'].__str__()

for i in hot_data:

text = re.sub(u"\\<.>", "", i['text']) # 去除<>標籤裡的內容

like_counts = i['like_counts']

user_id = i['user']['id']

print "list長度:"

print len(list)

base_url= ""

df = pd.read_excel("content.xlsx") # excel

id_list =df['id']

list =

i = 0

for id in id_list:

mblog_id = id.__str__()

print i

base_url2 = base_url+id.__str__() +'&page='

for p in range(0, 100):

try:

url = base_url2 + p.__str__()

print url

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

jsondata = resp.json()

if jsondata['ok'] != 0:

data = jsondata.get('data').get('data') # cards是頁面裡的乙個容器名字

print "data"

else:

break

if jsondata.get('data').get('hot_data'):

hot_data = jsondata.get('data').get('hot_data')

print "hot_data"

else:

hot_data = ""

print "hot_data_null"

getonepagecomment(mblog_id, data, hot_data)

except:

print 'error'

i = i + 1

print "ok"

writeincsv(list)

Python 微博搜尋爬蟲

由於網頁端反爬蟲機制比較完善所以才去移動端進行爬蟲。對網頁進行抓包,找到相關資料 檢視資料是否與網頁的內容相同 分析多組資料的請求頭 通過網頁分析構造url位址對,位址資訊訪問。import requests 構造搜尋內容 data 反爬蟲,模擬遊覽器訪問 headers print result ...

Python 爬蟲 微博找人頁面爬蟲(四)

通過分析頁面載入的過程,沒有發現有ajax非同步請求載入,但是selenium又不太穩定,有時會載入很久。那怎麼獲取內容呢?想了想,如果木有ajax非同步請求,那麼其實在第一次請求頁面的時候,頁面上的資訊就已經返回了,只是沒有顯示出來,所以,是通過js顯示response的內容?後面發現頁面有很多 ...

微博爬蟲總結 構建單機千萬級別的微博爬蟲系統

微博語料庫是乙個巨大且珍貴的中文語料資源,在輿情監控 商業分析 興趣挖掘等諸多領域都有廣泛的應用。而獲取微博語料庫的方法就是構建乙個穩定高效微博語料抓取系統。本次 chat 首先會帶著大家分析微博 pc 端 移動端各個站點的實際情況,以及能夠抓取的資料維度,隨後會逐個分析微博每個站點的登陸方案,並基...