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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬虫深入爬取_Python爬虫初学(一)—— 爬取段子

發布時間:2024/1/23 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫深入爬取_Python爬虫初学(一)—— 爬取段子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近開始學Python的爬蟲,是在這個博客跟著學習的,該博主用的是Python 2.7版本,而我使用的是3.5版本,很多不兼容的地方,不過沒關系,自己改改就好了。

我們想針對網站的內容進行篩選,只獲取自己感興趣的部分。比如你想在XX網站把小黃圖篩選出來,打包帶走。這里只做簡單的實現,以百思不得姐上的段子(純文本)為例。我們想要實現如下功能:

批量下載若干頁段子到本地文件中

按下任意一鍵,開始閱讀下一條段子

1. 獲取網頁代碼

導入urllib的相關庫,Python 3中應該這樣寫:

import urllib.request

import urllib.parse

import re

re庫是正則表達式(Regular Expression),后面作匹配時會用到。

百思不得姐的段子頁面url ='http://www.budejie.com/text/1',這里末尾數字1代表此為第一頁。通過以下代碼就能返回網頁內容。

req = urllib.request.Request(url)

# 添加headers 使之看起來像瀏覽器在訪問

req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 '

'(KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36')

response = urllib.request.urlopen(req)

# 得到網頁內容,注意必須使用decode()解碼

html = response.read().decode('utf-8')

print(html)的話,就是如下所示的內容:

這能看?段子呢?我們想要的段子呢?!

哦對了headers這樣查看。

按F12,然后...看圖吧

2. 正則匹配提取段子

要想篩選符合普通人閱讀的內容(如果還帶著html標簽那還咋讀是不),成功提取出段子,為此我們需要一些既定的模式去和網頁全部內容進行匹配,將模式下匹配成功的對象返回。我們使用強大的正則表達式進行匹配(Regular Expression),相關語法可以看這里。

僅僅針對本例中的網頁內容,先看看我們需要的段子對應了網頁中的什么內容。

可以看到段子被

(我們要的內容) 這樣的標簽所包圍,只需要指定相應規則提取出來即可!上圖可以看出段子正文前后是有很多空格的,需要匹配進去。

pattern = re.compile(r'

\s+(.*)\s+ ')

result = re.findall(pattern, html)

通過re庫的compile函數制定規則。

\s+可以匹配一個或更多的空格

.匹配除開換行符\n外的所有字符。

現在我們得到了匹配后的結果,來看下。

Bingo!提取出來了不是?!

可是我們發現里面還有些討厭的
。沒關系,寫幾行代碼的事。這里就不再展示去掉后的內容,自行腦補哈哈。

for each in content:

# 如果某個段子里有

if '
' in each:

# 替換成換行符并輸出

new_each = re.sub(r'
', '\n', each)

print(new_each)

# 沒有就照常輸出

else:

print(each)

這里content由get_content方法返回,表示所有獲取到的段子列表。get_content方法下面會給出實現。

至此,我們成功得到我們想看的段子了!如果想要下載到本地呢?

3. 下載段子到本地

通過定義一個save()函數即可,num參數用戶自定,想下載最近100頁的內容都沒問題!里面還有些變量沒有提到,最后會給出源代碼。

# num是指定網頁頁數

def save(num):

# 寫方式打開一個文本,把獲取的段子列表存放進去

with open('a.txt', 'w', encoding='utf-8') as f:

text = get_content(num)

# 和上面去掉
類似

for each in text:

if '
' in each:

new_each = re.sub(r'
', '\n', each)

f.write(new_each)

else:

f.write(str(each) + '\n')

下載到本地文檔后如下圖所示

4. 逐條讀取段子

段子太多,琳瑯滿目。可我們只希望一條條閱讀。通過按下鍵盤任意鍵可以切換到下一條,直到讀取到最后一條程序才結束,或者通過設置一個退出鍵隨時退出程序,比如設定q鍵退出。這里把全部代碼給出。

import urllib.request

import urllib.parse

import re

pattern = re.compile(r'

\s+(.*)\s+ ')

# 返回指定網頁的內容

def open_url(url):

req = urllib.request.Request(url)

req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 '

'(KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36')

response = urllib.request.urlopen(req)

html = response.read().decode('utf-8')

return html

# num為用戶自定,返回的是所有頁的段子列表

def get_content(num):

# 存放段子的列表

text_list = []

for page in range(1, int(num)):

address = 'http://www.budejie.com/text/' + str(page)

html = open_url(address)

result = re.findall(pattern, html)

# 每一頁的result都是一個列表,將里面的內容加入到text_list

for each in result:

text_list.append(each)

return text_list

# num是指定網頁頁數

def save(num):

# 寫方式打開一個文本,把獲取的段子列表存放進去

with open('a.txt', 'w', encoding='utf-8') as f:

text = get_content(num)

# 和上面去掉
類似

for each in text:

if '
' in each:

new_each = re.sub(r'
', '\n', each)

f.write(new_each)

else:

f.write(str(each) + '\n')

if __name__ == '__main__':

print('閱讀過程中按q隨時退出')

number = int(input('想讀幾頁的內容: '))

content = get_content(number + 1)

for each in content:

if '
' in each:

new_each = re.sub(r'
', '\n', each)

print(new_each)

else:

print(each)

# 用戶輸入

user_input = input()

# 不區分大小寫的q,輸入則退出

if user_input == 'q' or user_input == 'Q':

break

演示一下,效果是這樣的。

雖然功能很雞肋,不過作為初學我還是很滿意了,有興趣才能深入下去嘛!爬蟲可不僅僅如此而已,以后會學習更加高級的功能。

by @sunhaiyu

2016.8.15

總結

以上是生活随笔為你收集整理的python爬虫深入爬取_Python爬虫初学(一)—— 爬取段子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧洲成人在线视频 | 先锋影音av中文字幕 | 欧美有码视频 | 亚洲国产欧美在线 | av噜噜在线观看 | 亚欧洲乱码视频 | 国产男女猛烈无遮挡免费观看网站 | 国产乡下妇女三片 | 日韩一卡二卡三卡四卡 | 亚洲综合中文 | 亚洲精品影院在线 | 免费观看在线播放 | 国产视频网站在线观看 | 在线精品一区二区 | 国产精品腿扒开做爽爽爽挤奶网站 | 欧美一区二区三区不卡视频 | 日本欧美久久久久免费播放网 | 亚洲精品aⅴ | 又白又嫩毛又多15p 超碰在线一区 | 久久精品aaaaaa毛片 | 性感美女一级片 | 99久久精品一区二区 | 免费av日韩 | 亚洲色偷精品一区二区三区 | 国产精品免费视频观看 | 成人二三区 | 国产在线播 | 日本一区二区高清视频 | 亚洲电影在线观看 | av在线天堂| 欧美系列一区二区 | 精品麻豆视频 | 成人在线观看av | 国产喷水吹潮视频www | 啪啪网站视频 | 无码免费一区二区三区免费播放 | 欧美偷拍精品 | 日韩精品在线观看网站 | 欧美人与性禽动交精品 | 91一区二区在线观看 | 日本一级大毛片a一 | 国产 日韩 欧美 制服丝袜 | 果冻传媒18禁免费视频 | 99热免费观看 | 亚洲va欧美va国产综合久久 | 夜夜撸小说| se94se欧美 | 在线中文字幕日韩 | 69堂视频| 亚洲精品久久久久久久久久吃药 | 国产精品一级片 | 女人下面流白浆的视频 | 先锋影音av资源网 | 免费黄色小视频 | av男人的天堂av | 激情五月婷婷色 | 国产原创在线播放 | 成人xxxx | 韩国精品在线观看 | 在线能看的av网站 | 国产成人三级一区二区在线观看一 | 日本精品免费在线观看 | 黄色大片网站在线观看 | 伊人亚洲影院 | 牲欲强的熟妇农村老妇女视频 | 日韩综合一区 | 亚洲h视频在线观看 | 制服.丝袜.亚洲.中文.综合懂 | 熟女国产精品一区二区三 | 成人av影院在线观看 | 国产成人亚洲精品无码h在线 | 久久久无码精品亚洲无少妇 | 国产初高中真实精品视频 | 草久av| 肉色超薄丝袜脚交一区二区图片 | 99网站| 精品欧美一区二区三区 | 中文字幕在线免费 | 日批网址| 另类一区二区 | 日韩污污 | 在线看日韩av | 国产影音先锋 | 西比尔在线观看完整视频高清 | 一本色道久久综合熟妇 | 91新网站 | 欧美三级在线 | 亚洲a在线观看 | 四虎精品欧美一区二区免费 | 91亚洲视频在线观看 | 日日夜夜骑| 美女干b视频 | 国产亚洲精久久久久久无码苍井空 | 亚洲综合另类小说 | 日韩不卡av在线 | 久久人人爽人人爽人人片av免费 | 青青草一区二区 | 五月天综合色 | 97超碰国产精品无码蜜芽 |