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

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

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

本次爬蟲(chóng)思路

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

本次操練網(wǎng)頁(yè)

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

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

?一.爬蟲(chóng)模板

??1.urllib庫(kù)的使用模板

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

??2.requests庫(kù)的使用模板

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

?二.分析信息接口

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

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

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

import requests

# 需要請(qǐng)求的url
url = 'https://www.duanmeiwen.com/xinshang/3203373.html'

# 偽裝請(qǐng)求頭
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)

?四. 提取信息

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

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

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

import re

接下來(lái)開(kāi)始操作這堆"字符串"

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

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

效果

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

??2.XPath

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

首先導(dǎo)入XPath

from lxml import etree

接下來(lái)開(kāi)始操作

效果

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

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

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

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

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é)(附完整代碼)

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

??完整代碼

import requests
from lxml import etree

# 需要請(qǐng)求的url
url = 'https://www.duanmeiwen.com/xinshang/3203373.html'

# 偽裝請(qǐng)求頭
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é)會(huì)利用python解決文章付費(fèi)限制問(wèn)題的詳細(xì)內(nèi)容,更多關(guān)于Python解決文章付費(fèi)限制的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論