每天乙個小Demo Python爬蟲糗事百科的抓取

2021-08-19 08:26:22 字數 1432 閱讀 4204

假如我們想爬取糗事百科(http:上的段子,今天的demo如下:

import re

import urllib.request

#爬取頁面鏈結

def get_content(url,page):

# 模擬成瀏覽器

opener = urllib.request.build_opener()

opener.addheaders = [headers]

# 將opener安裝為全域性

urllib.request.install_opener(opener)

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

#構建對應使用者提取的正規表示式,要根據**實際情況改變

user_pat = 'target="_blank" rel="nofollow" style=.+?

# 構建段子內容提取的正規表示式

content_pat = '(.*?)

' # 尋找出所有的使用者

user_list = re.compile(user_pat, re.s).findall(html_info)

# 尋找出所有的內容

cotent_list = re.compile(content_pat, re.s).findall(html_info)

# 通過for迴圈遍歷段子內容並將內容分別賦給對應的變數

x = 1

for content in cotent_list:

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

# 用字串作為變數名,先將對應字串賦給乙個變數

name = "content" + str(x)

# 通過exec()函式實現用字串作為變數名並賦值

exec(name+'=content')

x += 1

y = 1

# 通過for迴圈遍歷使用者,並輸出該使用者對應的內容

for user in user_list:

name = "content" + str(y)

print("使用者" + str(page) + str(y) + "是:" + user)

print("內容是:")

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

print("\n")

y += 1

#分別獲取各頁的段子,通過for迴圈可以獲取多頁

for i in range(1, 10):

# url = "" + str(i)

get_content(url, i)

爬蟲的原理基本都是相同的,主要不同體現在資料的過濾,也就是正規表示式的不同,所以我們需要觀察網頁**的特性,取出所需的內容,然後再進行篩選,組合。

每天乙個python小技巧

使用場景 如果需要多次重複的產出檔案,可以通過如下的方式來根據時間戳建立新的資料夾,用來區分儲存檔案。def getcurrenttime dirpath 根據時間戳,建立指定輸出檔案 param dirpath return if os.path.exists dirpath time.strft...

每天乙個shell小知識(for)

在實際工作環境中,經常會遇到某項任務需要多次執行的情況,而每次執行時僅僅是處理的物件不一樣,其他命令完全相同。如 根據伺服器清單檢查各個主機的存活狀態 根據ip位址黑名單設定拒絕訪問的防火牆策略等。這樣繁瑣的重複任務時,if語句已經不能滿足需求。則我們需要for迴圈語句。使用for迴圈時,需要指定乙...

每天乙個CSS(box sizing

content box 是指定box的 寬度和高度分別應用到元素的內容框。在寬度和高度之外繪製元素的內邊距和邊框。示例一 設定div的外邊距為 5px,內邊距為 5px,邊框為 10px,寬為100px,高為100px,我們指定box sizing 為content box grid contain...