本文爬取的是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 端 移動端各個站點的實際情況,以及能夠抓取的資料維度,隨後會逐個分析微博每個站點的登陸方案,並基...