日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

利用Python爬取糗事百科段子信息

發(fā)布時(shí)間:2024/9/15 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用Python爬取糗事百科段子信息 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章來源:公眾號(hào)-智能化IT系統(tǒng)。


爬蟲技術(shù)目前越來越流行,這里介紹一個(gè)爬蟲的簡(jiǎn)單應(yīng)用。

爬取的內(nèi)容為糗事百科文字內(nèi)容中的信息,如圖所示:


爬取糗事百科文字35頁的信息,通過手動(dòng)瀏覽,以下為前四頁的網(wǎng)址:

  • http://www.qiushibaike.com/text/

  • http://www.qiushibaike.com/text/page/2/?s=4964629

  • http://www.qiushibaike.com/text/page/3/?s=4964629

  • http://www.qiushibaike.com/text/page/4/?s=4964629

這里的?s=4964629應(yīng)該只是從Cookies里提取的用戶標(biāo)識(shí),去掉后依然能打開網(wǎng)頁。然后把第一頁的網(wǎng)址改為http://www.qiushibaike.com/text/page/1/也能正常瀏覽,故只需更改page后面的數(shù)字即可,以此來構(gòu)造出35頁的網(wǎng)址。

需要爬取的信息有:用戶ID,用戶等級(jí),用戶性別,發(fā)表段子文字信息,好笑數(shù)量和評(píng)論數(shù)量,如下圖所示:


案例中運(yùn)用Python對(duì)文件的操作,把爬取的信息存儲(chǔ)在本地的txt文本中。


一. 前置工作:

1.??安裝python

2.??安裝PyCharm

python不用說了。Pycharm是python的開發(fā)工具。具體安裝可以百度參考。

?

二. 技術(shù)點(diǎn)介紹

爬蟲技術(shù)并不需要掌握python非常精通,本案例只是涉及到python如下的基本技術(shù)點(diǎn):

1.?字符串的基本操作

2.?python函數(shù)

3.?python元組應(yīng)用

4.?python的for循環(huán)

5.?python的條件判斷

6.?python文件操作

?

另外需要了解一下http的請(qǐng)求,涉及如下:

1.?http請(qǐng)求和響應(yīng)基本原理

2.?get和post請(qǐng)求基本知識(shí)

3.?http請(qǐng)求頭中的User-Agent,便于偽造精確的請(qǐng)求信息

?

本案例是針對(duì)python的爬取網(wǎng)頁數(shù)據(jù),所以python針對(duì)爬蟲的相關(guān)技術(shù)需要熟悉:

1.?Requests庫(模擬請(qǐng)求)

2.?Re模塊(正則表達(dá)式的應(yīng)用,在請(qǐng)求結(jié)果中匹配數(shù)據(jù))


最后就是網(wǎng)頁元素的基本知識(shí)了,包括如下:

1.?html元素

2.?chrome瀏覽器的使用,以及獲取網(wǎng)頁指定元素的標(biāo)簽

?

本文不對(duì)上述技術(shù)點(diǎn)進(jìn)行講述,讀者如果有問題可以百度搜索一下,應(yīng)該很快就能熟悉。熟悉了上述技術(shù)點(diǎn),就可以完全掌握下面的爬取代碼了。

?

三. 爬取代碼

如下代碼可以直接復(fù)制執(zhí)行:

import requests

import re

?

headers = {

???'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'

}

?

info_lists = []

?

defjudgment_sex(class_name):

??if class_name == 'womenIcon':

????return '女'

??else:

????return??'男'

?

def get_info(url):

???res = requests.get(url)

???ids = re.findall('<h2>(.*?)</h2>',res.text,re.S)

???levels = re.findall('<div class="articleGender\D+Icon">(.*?)</div>',res.text,re.S)

???sexs = re.findall('<div class="articleGender(.*?)">',res.text,re.S)

???contents = re.findall('<divclass="content">.*?<span>(.*?)</span>',res.text,re.S)

???laughs = re.findall('<spanclass="stats-vote"><iclass="number">(\d+)</i>',res.text,re.S)

???comments = re.findall('<iclass="number">(\d+)</i>?評(píng)論',res.text,re.S)

???for id,level,sex,content,laugh,comment inzip(ids,levels,sexs,contents,laughs,comments):

?????info = {

???????'id':id,

???????'level':level,

???????'sex':judgment_sex(sex),

???????'content':content,

???????'laugh':laugh,

???????'comment':comment

?????}

?????info_lists.append(info)

?

if __name__ =='__main__':

???urls = ['http://www.qiushibaike.com/text/page/{}/'.format(str(i))for i in range(1,36)]

???for url in urls:

?????get_info(url)

???for info_list in info_lists:

?????f = open('C:/Users/Administrator//Desktop/qiushi.text','a+')

?????try:

???????f.write(info_list['id']+'\n')

???????f.write(info_list['level'] + '\n')

???????f.write(info_list['sex'] + '\n')

???????f.write(info_list['content'] + '\n')

???????f.write(info_list['laugh'] + '\n')

???????f.write(info_list['comment'] + '\n\n')

???????f.close()

?????except UnicodeEncodeError:

???????pass

?????print(info_list)

?

運(yùn)行的結(jié)果保存在電腦,文件名為qiushi的文檔中,如圖所示



四. 代碼分析

(1)1~2行

導(dǎo)入程序需要的庫,Requests庫用于請(qǐng)求網(wǎng)頁獲取網(wǎng)頁數(shù)據(jù)。運(yùn)用正則表達(dá)式不需要用BeautifulSoup解析網(wǎng)頁數(shù)據(jù),而是使用Python中的re模塊匹配正則表達(dá)式。

(2)4~7行

通過Chrome瀏覽器的開發(fā)者工具,復(fù)制User-Agent,用于偽裝為瀏覽器,便于爬蟲的穩(wěn)定性。

(3)17~34行

定義get_info()函數(shù),用于獲取網(wǎng)頁信息并把數(shù)據(jù)傳入到info_lists列表中。傳入U(xiǎn)RL后,進(jìn)行請(qǐng)求。

(4)第9行

定義了一個(gè)info_lists空列表,用于存放爬取的信息,每條數(shù)據(jù)為字典結(jié)構(gòu)。

(5)11~15行

定義judgment_sex()函數(shù),用于判斷用戶的性別。

(5)36~51行

為程序的主入口。通過對(duì)網(wǎng)頁URL的觀察,通過列表的推導(dǎo)式構(gòu)造35個(gè)URL,并依次調(diào)用get_info()函數(shù),循環(huán)遍歷info_lists列表,存入到文件名qiushi的TXT文檔中。


公眾號(hào)-智能化IT系統(tǒng)。每周都有技術(shù)文章推送,包括原創(chuàng)技術(shù)干貨,以及技術(shù)工作的心得分享。掃描下方關(guān)注。



公眾號(hào)-智能化IT系統(tǒng)。每周都有技術(shù)文章推送,包括原創(chuàng)技術(shù)干貨,以及技術(shù)工作的心得分享。掃描下方關(guān)注。

總結(jié)

以上是生活随笔為你收集整理的利用Python爬取糗事百科段子信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。