python爬蟲項目實戰(zhàn):爬取用戶的所有信息掸冤,如性別考婴、年齡等

python爬蟲項目實戰(zhàn):
爬取糗事百科用戶的所有信息,包括用戶名、性別伊群、年齡、內(nèi)容等等崇棠。

10個步驟實現(xiàn)項目功能丸卷,下面開始實例講解:
1.導(dǎo)入模塊
import re
import urllib.request
from bs4 import BeautifulSoup
2.添加頭文件,防止爬取過程被拒絕鏈接
def qiuShi(url,page):
################### 模擬成高仿度瀏覽器的行為 ##############

設(shè)置多個頭文件參數(shù)萎坷,模擬成高仿度瀏覽器去爬取網(wǎng)頁

heads ={
'Connection':'keep-alive',
'Accept-Language':'zh-CN,zh;q=0.9',
'Accept':'text/html,application/xhtml+xml,application/xml;
q=0.9,image/webp,image/apng,/;q=0.8',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
}
headall = []
for key,value in heads.items():
items = (key,value)

將多個頭文件參數(shù)一個一個添加到headall列表中

headall.append(items)

print(headall)

print('測試1--')

創(chuàng)建opener對象

opener = urllib.request.build_opener()

添加頭文件到opener對象

opener.addheaders = headall

將opener對象設(shè)置成全局模式

urllib.request.install_opener(opener)

學(xué)習(xí)Python中的小伙伴哆档,需要學(xué)習(xí)資料的話住闯,可以到我的微信公眾號:Python學(xué)習(xí)知識圈,后臺回復(fù):“01”比原,即可拿Python學(xué)習(xí)資料


爬取網(wǎng)頁并讀取數(shù)據(jù)到data

data = opener.open(url).read().decode()

data1 = urllib.request.urlopen(url).read().decode('utf-8')

print(data1)

print('測試2--')

################## end ########################################
3.創(chuàng)建soup解析器對象
soup = BeautifulSoup(data,'lxml')
x = 0
4.開始使用BeautifulSoup4解析器提取用戶名信息
############### 獲取用戶名 ########################
name = []

使用bs4解析器提取用戶名

unames = soup.find_all('h2')

print('測試3--',unames)

for uname in unames:

print(uname.get_text(),'第',page,'-',str(x)+'用戶名:',end='')

將用戶名一個一個添加到name列表中

name.append(uname.get_text())

print(name)

print('測試4--')

#################end#############################
5.提取發(fā)表的內(nèi)容信息
############## 發(fā)表的內(nèi)容 #########################
cont = []
data4 = soup.find_all('div',class_='content')

print(data4)

記住二次篩選一點要轉(zhuǎn)換成字符串形式雇寇,否則報錯

data4 = str(data4)

使用bs4解析器提取內(nèi)容

soup3 = BeautifulSoup(data4,'lxml')
contents = soup3.find_all('span')
for content in contents:

print('第',x,'篇糗事的內(nèi)容:',content.get_text())

將內(nèi)容一個一個添加到cont列表中

cont.append(content.get_text())

print(cont)

print('測試5--')

##############end####################################
6.提取搞笑指數(shù)
#################搞笑指數(shù)##########################
happy = []

獲取搞笑指數(shù)

第一次篩選

data2 = soup.find_all('span',class_="stats-vote")

獲取搞笑指數(shù)

第二次篩選

data2 = str(data2) # 將列表轉(zhuǎn)換成字符串形式才可以使用

print(data2)

print('測試6--')

soup1 = BeautifulSoup(data2,'lxml')
happynumbers = soup1.find_all('i',class_="number")
for happynumber in happynumbers:

print(happynumber.get_text())

將將搞笑數(shù)一個一個添加到happy列表中

happy.append(happynumber.get_text())

print(happy)

print('測試7--')

##################end#############################
7.提取評論數(shù)
############## 評論數(shù) ############################
comm = []
data3 = soup.find_all('a',class_='qiushi_comments')
data3 = str(data3)

print(data3)

soup2 = BeautifulSoup(data3,'lxml')
comments = soup2.find_all('i',class_="number")
for comment in comments:

print(comment.get_text())

將評論數(shù)一個一個添加到comm列表中

comm.append(comment.get_text())
############end#####################################
8.使用正則表達式提取性別和年齡
######## 獲取性別和年齡 ##########################

使用正則表達式匹配性別和年齡

pattern1 = '<div class="articleGender (w?)Icon">(d?)</div>'
sexages = re.compile(pattern1).findall(data)

print(sexages)

9.設(shè)置用戶所有信息輸出的格局設(shè)置
################## 批量輸出用戶的所以個人信息 #################
print()
for sexage in sexages:
sa = sexage
print(''17, '== 第', page, '頁-第', str(x+1) + '個用戶 == ',''17)

輸出用戶名

print('【用戶名】:',name[x],end='')

輸出性別和年齡

print('【性別】:',sa[0],' 【年齡】:',sa[1])

輸出內(nèi)容

print('【內(nèi)容】:',cont[x])

輸出搞笑數(shù)和評論數(shù)

print('【搞笑指數(shù)】:',happy[x],' 【評論數(shù)】:',comm[x])
print(''25,' 三八分割線 ',''25)
x += 1
###################end##########################
10.設(shè)置循環(huán)遍歷爬取13頁的用戶信息
for i in range(1,14):

糗事百科的網(wǎng)址

url = 'https://www.qiushibaike.com/8hr/page/'+str(i)+'/'
qiuShi(url,i)
運行結(jié)果谢床,部分截圖:


以上的運行結(jié)果是每時都在更新的识腿,所以讀者在運行時,結(jié)果不一樣是正常的渡讼。
今天的項目實戰(zhàn)就到這里了,喜歡的朋友可以關(guān)注展箱、轉(zhuǎn)發(fā)一下喔蹬昌,希望今天的內(nèi)容對大家有所幫助。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栖榨,一起剝皮案震驚了整個濱河市明刷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌愚争,老刑警劉巖挤聘,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異狸膏,居然都是意外死亡添怔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門砾脑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來韧衣,“玉大人畅铭,你說我怎么就攤上這事硕噩。” “怎么了辉懒?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵眶俩,是天一觀的道長颠印。 經(jīng)常有香客問我嗽仪,道長,這世上最難降的妖魔是什么兢孝? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任跨蟹,我火速辦了婚禮窗轩,結(jié)果婚禮上座咆,老公的妹妹穿的比我還像新娘介陶。我一直安慰自己,他們只是感情好哺呜,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著国撵,像睡著了一般介牙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耻瑟,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天喳整,我揣著相機與錄音谆构,去河邊找鬼框都。 笑死,一個胖子當(dāng)著我的面吹牛熬尺,可吹牛的內(nèi)容都是我干的谓罗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼揭措,長吁一口氣:“原來是場噩夢啊……” “哼刻蚯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起躬充,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤讨便,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后器钟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡疆瑰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年穆役,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耿币。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡淹接,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出塑悼,到底是詐尸還是另有隱情,我是刑警寧澤霞势,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布斑鸦,位于F島的核電站,受9級特大地震影響固以,放射性物質(zhì)發(fā)生泄漏嘱巾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尖坤。 院中可真熱鬧,春花似錦慢味、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腔彰。三九已至辖佣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杯拐,已是汗流浹背世蔗。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工污淋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芙沥,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像歌憨,于是被迫代替她去往敵國和親务嫡。 傳聞我的和親對象是個殘疾皇子准谚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容