国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
使用python抓取新浪微博數(shù)據(jù)

本篇文章是python爬蟲系列的第四篇,介紹如何登錄抓取新浪微博的信息。并對(duì)其中的關(guān)鍵內(nèi)容進(jìn)行提取和清洗。

開始前的準(zhǔn)備工作

首先是開始之前的準(zhǔn)備工作,與前面的文章相比,我們除了導(dǎo)入庫文件,還把設(shè)置登錄頁URL,以及登錄用戶密碼也放在了準(zhǔn)備工作中。下面分別來說明。

導(dǎo)入所需的庫文件,第一個(gè)是requests,用于請(qǐng)求和頁面抓取,第二個(gè)是re正則庫,用于從頁面的代碼中提取所需要的信息。第三個(gè)是pandas庫,用來進(jìn)行拼表以及數(shù)據(jù)導(dǎo)出。

#導(dǎo)入requests庫(請(qǐng)求和頁面抓取)

import requests

#導(dǎo)入正則庫(從頁面代碼中提取信息)

import re

#導(dǎo)入pandas庫(用于創(chuàng)建數(shù)據(jù)表和導(dǎo)出csv)

import pandas as pd

開始抓取前,先找到新浪微博的登陸頁面地址,PC端的頁面內(nèi)容較多,我們選擇通過移動(dòng)端頁面登陸微博。地址是http://m.weibo.cn/,點(diǎn)擊登陸后,跳轉(zhuǎn)到登陸頁面地址https://passport.weibo.cn/signin/login,這是我們要提交用戶名和密碼進(jìn)行登陸的地址。此外還需要找到要抓取頁面的URL地址。這里我們抓取“藍(lán)鯨碎碎念”的微博首頁。http://weibo.com/askcliff/home

#設(shè)置登陸用戶名和密碼

payload = {

'username': '用戶名',

'password': '密碼'}

#微博登陸頁URL

url1='https://passport.weibo.cn/signin/login'

#微博內(nèi)容抓取頁URL

url2='http://weibo.com/askcliff/home'

準(zhǔn)備工作完成后,還需要對(duì)爬蟲進(jìn)行偽裝,下面是具體的步驟和內(nèi)容。

將爬蟲偽裝成瀏覽器

首先是設(shè)置頭文件信息,里面包括瀏覽器的信息和字符編碼以及引薦來源信息等等。這些信息的獲得方法請(qǐng)參考本系列第三篇文章的內(nèi)容。

#設(shè)置請(qǐng)求頭文件信息

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',

'Accept':'text/html;q=0.9,*/*;q=0.8',

'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',

'Accept-Encoding':'gzip',

'Connection':'close',

'Referer':'http://www.baidu.com/'

}

設(shè)置Cookie的內(nèi)容,獲得cookie值的內(nèi)容也請(qǐng)參考第三篇文章的內(nèi)容。唯一的不同在于需要在登陸狀態(tài)下查看cookie值并進(jìn)行保存。Cookie中會(huì)保存登陸信息。

#設(shè)置Cookie的內(nèi)容

cookie={'ALF':'1512025918',

'Apache':'5582079329023.459.1480472083206',

'SCF':'AoVcrse87P6zmMtZKsEug5bAAo_H6Zt17MI3RlrtRpA4qlvNTTnENdzBgdAiYtXpxqNqfUnrc4z9taUndzaGr9c.',

'SINAGLOBAL':'2194771417416.632.1423499773609',

'SSOLoginState':'1480472583',

'SUB':'_2A251OgvvDeTxGedI61YV-C_EyD6IHXVWTnonrDV8PUNbmtANLRXfkW-bhQmK-cEZIcxdomJO1Yzg52KkoQ..', 'SUBP':'0033WrSXqPxfM725Ws9jqgMF55529P9D9WWgwwO53bYmTfR9ipEOyk5q5JpX5K2hUgL.Fo2cehBX1h2Re0z2dJLoIEXLxKnL1KeL1-BLxK.LBozLBonLxKMLBKzL12-LxKMLBKzL12-LxK-LB.qLBo-t',

'SUHB':'02Me2StsrIXMMi',

'ULV':'1480472083473:198:8:1:5582079329023.459.1480472083206:1479779756603',

'UOR':'www.wpdaxue.com,widget.weibo.com,www.baidu.com',

'WBStorage':'2c466cc84b6dda21|undefined',

'WBtopGlobal_register_version':'e91f392a3df0305e',

'YF-Page-G0':'ee5462a7ca7a278058fd1807a910bc74',

'YF-Ugrow-G0':'3a02f95fa8b3c9dc73c74bc9f2ca4fc6',

'YF-V5-G0':'35ff6d315d1a536c0891f71721feb16e',

'_T_WM':'8519d55f44e2d02f81931ae8c417a1b1',

'__gads':'ID=3ca23266e2f80acc:T=1423541337:S=ALNI_MbTV-7G_42zCQkplHbiQUzrDs36Zg',

'_ga':'GA1.2.1810133914.1425401997',

'_s_tentry':'www.baidu.com',

'login_sid_t':'01055f2ea0a097fc1512f94fbc6b0c88',

'lzstat_uv':'1488026467799833128|3200746',

'un':'139******03',

'wvr':'6'}

設(shè)置完headers和cookie信息后,就可以開始進(jìn)行登陸并抓取頁面信息了。

抓取微博信息

首先設(shè)置會(huì)話對(duì)象,保證每次頁面請(qǐng)求都能保留cookie信息,換句話說就是每次請(qǐng)求都是登陸狀態(tài)。然后以post形式向微博的登陸頁面提交用戶名和密碼進(jìn)行登陸。登錄成功后,請(qǐng)求真正需要抓取的頁面地址,并進(jìn)行內(nèi)容編碼。這里抓取的是”藍(lán)鯨碎碎念”的微博首頁。

#設(shè)置一個(gè)會(huì)話對(duì)象

s = requests.Session()

#以post形式提交登陸用戶名和密碼

s.post(url=url1, data=payload, headers=headers)

#提交請(qǐng)求獲取要抓取的頁面信息

r=requests.get(url=url2, cookies=cookie, headers=headers)

#獲取頁面的內(nèi)容信息

html=r.content

#對(duì)頁面內(nèi)容進(jìn)行編碼

html=str(html, encoding = 'UTF-8')

#查看頁面內(nèi)容

html

提取信息并進(jìn)行數(shù)據(jù)清洗

抓取完頁面后,我們使用正則對(duì)頁面中的信息進(jìn)行提取,這里提取兩個(gè)信息,第一是用戶昵稱。第二是用戶性別。

首先使用正則提取用戶昵稱,然后用if判斷并排除重復(fù)信息,得到用戶的昵稱字段。

#提取微博昵稱信息

nickname=re.findall(r'nickname=(.*?)\\',html)

#清洗微博用戶昵稱

nickname_1=[]

for i in nickname:

if not 'gender' in i:

nickname_1.append(i)

同樣的方式提取用戶性別,先使用正則提取,然后通過判斷排除重復(fù)信息獲得微博用戶性別字段。

#提取微博用戶性別

gender=re.findall(r'gender=(.*?)\\'',html)

#清洗微博用戶性別

gender_1=[]

for i in gender:

if not '&' in i:

gender_1.append(i)

生成數(shù)據(jù)表并導(dǎo)出數(shù)據(jù)

使用pandas庫將微博用戶昵稱和性別兩個(gè)字段拼成數(shù)據(jù)表。并導(dǎo)出為csv格式的文件,以便進(jìn)行后續(xù)的統(tǒng)計(jì)和分析工作。

#生成數(shù)據(jù)表

weibo=pd.DataFrame({'nickname':nickname_1,'gender':gender_1})

#導(dǎo)出為csv文件

weibo.to_csv('weibo.csv')

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
爬蟲實(shí)戰(zhàn):如何找到感興趣的技能交換者
Python爬取新浪微博評(píng)論
HTTP Retrofit 網(wǎng)絡(luò)傳輸
SpringMvc和servlet簡(jiǎn)單對(duì)比介紹
Cookie和Session專題
用Python整理你的通訊錄
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服