欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文學(xué)會利用python解決文章付費(fèi)限制問題

 更新時間:2023年05月07日 14:31:04   作者:朦朧的雨夢  
本篇文章主要介紹利用Python爬蟲爬取付費(fèi)文章,適合練習(xí)爬蟲基礎(chǔ)同學(xué),文中描述和代碼示例很詳細(xì),干貨滿滿,感興趣的小伙伴快來一起學(xué)習(xí)吧

本次爬蟲思路

最最重要的是分析信息接口?。?!
1. 獲取url
2. 通過請求拿到響應(yīng)
3. 處理反爬
4. 提取信息
5. 保存內(nèi)容

本次操練網(wǎng)頁

https://www.duanmeiwen.com/xinshang/3203373.html(某美文網(wǎng))

網(wǎng)頁內(nèi)容:

?一.爬蟲模板

??1.urllib庫的使用模板

import urllib.request     
url ='xxxxxxxxxxxx'   
#發(fā)送請求                
 request= urllib.request.Request(url,data,header)      
 #得到響應(yīng)
 response=urllib.request.urlopen(request)
 #解碼
 content = response.read().decode() 
 #查看數(shù)據(jù)
 print(content)    

??2.requests庫的使用模板

import requests   
url ='xxxxxxxxxxxx' 
#發(fā)送請求                              
response = request.get(url, params,headers)  (get請求或者post請求)  
#根據(jù)響應(yīng)的格式解碼,非常智能
response.encoding=response.appareent_encoding
 #查看數(shù)據(jù)
 print(response.txt)

?二.分析信息接口

1.首先右鍵查看網(wǎng)頁源代碼

很明顯,爬取的信息就在源代碼里,所以直接對網(wǎng)頁鏈接發(fā)起請求。這里請求頭偽裝我們優(yōu)先攜帶user-agent

?三.通過請求拿到響應(yīng)

import requests

# 需要請求的url
url = 'https://www.duanmeiwen.com/xinshang/3203373.html'

# 偽裝請求頭
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
}

# 獲得響應(yīng)
response = requests.get(url=url, headers=headers)

# 智能解碼
response.encoding = response.apparent_encoding
# 打印數(shù)據(jù)
print(response.text)

?四. 提取信息

針對返回數(shù)據(jù)的特點(diǎn),我們現(xiàn)在有三種方法:

??1.正則表達(dá)式

正則表達(dá)式是對字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”))操作的一種邏輯公式,就是用事先定義好的一些特定字符及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達(dá)對字符串的一種過濾邏輯。正則表達(dá)式是一種文本模式,該模式描述在搜索文本時要匹配的一個或多個字符串。簡單來說,利用一定的邏輯公式,過濾掉不需要的數(shù)據(jù),主要處理字符串。對于本題來說有點(diǎn)殺雞用牛刀了。簡單來示范一下:
首先導(dǎo)入re模塊

import re

接下來開始操作這堆"字符串"

re.compile()是用來優(yōu)化正則的,它將正則表達(dá)式轉(zhuǎn)化為對象,re.search(pattern, string)的調(diào)用方式就轉(zhuǎn)換為 pattern.search(string)的調(diào)用方式,多次調(diào)用一個正則表達(dá)式就重復(fù)利用這個正則對象,可以實現(xiàn)更有效率的匹配。需要搭配finditer()等一起使用,參數(shù)pattern : 正則表達(dá)式;,flags : 表示匹配模式。

右鍵點(diǎn)擊檢查進(jìn)入Network頁面,主要是方便我們看清楚結(jié)構(gòu)。

效果

這里寫的比較粗糙,因為大家會發(fā)現(xiàn)我們會大量在重復(fù)寫一個相同的篩選語句,所以就有那么一點(diǎn)機(jī)械重復(fù)的感覺,而且我們有專門對付這中HTML結(jié)構(gòu)的工具,所以接下來咱們隆重介紹XPath!

??2.XPath

XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。XPath基于XML的樹狀結(jié)構(gòu),提供在數(shù)據(jù)結(jié)構(gòu)樹中找尋節(jié)點(diǎn)的能力。起初XPath的提出的初衷是將其作為一個通用的、介于XPointer與XSL間的語法模型。但是XPath很快地被開發(fā)者采用來當(dāng)作小型查詢語言。我們只要簡單理解為它主要是針對定位HTML中某部分位置的語言。

首先導(dǎo)入XPath

from lxml import etree

接下來開始操作

效果

這就是優(yōu)雅,對比上面,我們用三行代碼就完成了任務(wù),由此可見,用對方法很重要。

?? 3.漂亮的湯(BeautifulSoup)<本次不使用>

?五.保存內(nèi)容

這里就很簡單,基礎(chǔ)文件操作的知識,“行百里者半九十”,來吧,咱們直接一口氣寫完。

tree = etree.HTML(response.text)
titles = tree.xpath('/html/body/div[2]/div[2]/div/div[2]/h2/text()')
message = tree.xpath('/html/body/div[2]/div[2]/div/div[2]/p/text()')
for i in range(len(message)):
    with open('優(yōu)美文藝句子.txt', 'a', encoding='utf-8') as fp:
        fp.write(message[i])
        fp.write('\n')
print('文章爬取完成')

效果

?六.總結(jié)(附完整代碼)

過今天的小案例,我們明白了,第一,思路一定要清楚,快準(zhǔn)狠分析出接口鏈接,第二,提取數(shù)據(jù)的方法要正確,這樣會直接事半功倍,好了,今天就分享到這里,謝謝大家的觀看,有什么想法記得評論區(qū)告訴我!拜拜~? ? ?

??完整代碼

import requests
from lxml import etree

# 需要請求的url
url = 'https://www.duanmeiwen.com/xinshang/3203373.html'

# 偽裝請求頭
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
}

# 獲得響應(yīng)
response = requests.get(url=url, headers=headers)

# 智能解碼
response.encoding = response.apparent_encoding

# 提取數(shù)據(jù)
tree = etree.HTML(response.text)
titles = tree.xpath('/html/body/div[2]/div[2]/div/div[2]/h2/text()')
message = tree.xpath('/html/body/div[2]/div[2]/div/div[2]/p/text()')

#遍歷保存數(shù)據(jù)
for i in range(len(message)):
    with open('優(yōu)美文藝句子.txt', 'a', encoding='utf-8') as fp:
        fp.write(message[i])
        fp.write('\n')
print('文章爬取完成')

以上就是一文學(xué)會利用python解決文章付費(fèi)限制問題的詳細(xì)內(nèi)容,更多關(guān)于Python解決文章付費(fèi)限制的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論