每天一個(gè)小Demo-Python爬蟲糗事百科的抓取

假如我們想爬取糗事百科(http://www.qiushibaike.com/)上的段子,今天的Demo如下:

import re

import urllib.request

#爬取頁(yè)面鏈接

def get_content(url,page):

? ? # 模擬成瀏覽器

? ? headers = ("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4882.400 QQBrowser/9.7.13059.400")

? ? opener = urllib.request.build_opener()

? ? opener.addheaders = [headers]

? ? # 將opener安裝為全局

? ? urllib.request.install_opener(opener)

? ? html_info = urllib.request.urlopen(url).read().decode("utf-8")

? ? #構(gòu)建對(duì)應(yīng)用戶提取的正則表達(dá)式,要根據(jù)網(wǎng)站實(shí)際情況改變

? ? # 構(gòu)建段子內(nèi)容提取的正則表達(dá)式

? ? content_pat = '

(.*?)
'

? ? # 尋找出所有的用戶

? ? user_list = re.compile(user_pat, re.S).findall(html_info)

? ? # 尋找出所有的內(nèi)容

? ? cotent_list = re.compile(content_pat, re.S).findall(html_info)

? ? # 通過for循環(huán)遍歷段子內(nèi)容并將內(nèi)容分別賦給對(duì)應(yīng)的變量

? ? x = 1

? ? for content in cotent_list:

? ? ? ? content = content.replace("\n", "")

? ? ? ? # 用字符串作為變量名,先將對(duì)應(yīng)字符串賦給一個(gè)變量

? ? ? ? name = "content" + str(x)

? ? ? ? # 通過exec()函數(shù)實(shí)現(xiàn)用字符串作為變量名并賦值

? ? ? ? exec(name+'=content')

? ? ? ? x += 1

? ? y = 1

? ? # 通過for循環(huán)遍歷用戶,并輸出該用戶對(duì)應(yīng)的內(nèi)容

? ? for user in user_list:

? ? ? ? name = "content" + str(y)

? ? ? ? print("用戶" + str(page) + str(y) + "是:" + user)

? ? ? ? print("內(nèi)容是:")

? ? ? ? exec("print("+name+")")

? ? ? ? print("\n")

? ? ? ? y += 1

#分別獲取各頁(yè)的段子,通過for循環(huán)可以獲取多頁(yè)

for i in range(1, 10):

? ? # https://www.qiushibaike.com/8hr/page/5/

? ? url = "https://www.qiushibaike.com/8hr/page/" + str(i)

? ? get_content(url, i)

爬蟲的原理基本都是相同的,主要不同體現(xiàn)在數(shù)據(jù)的過濾,也就是正則表達(dá)式的不同,所以我們需要觀察網(wǎng)頁(yè)代碼的特性,取出所需的內(nèi)容,然后再進(jìn)行篩選,組合。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容