一文學會利用python解決文章付費限制問題
本次爬蟲思路
最最重要的是分析信息接口?。?!
1. 獲取url
2. 通過請求拿到響應
3. 處理反爬
4. 提取信息
5. 保存內容
本次操練網(wǎng)頁
https://www.duanmeiwen.com/xinshang/3203373.html(某美文網(wǎng))
網(wǎng)頁內容:


?一.爬蟲模板
??1.urllib庫的使用模板
import urllib.request url ='xxxxxxxxxxxx' #發(fā)送請求 request= urllib.request.Request(url,data,header) #得到響應 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ù)響應的格式解碼,非常智能 response.encoding=response.appareent_encoding #查看數(shù)據(jù) print(response.txt)
?二.分析信息接口
1.首先右鍵查看網(wǎng)頁源代碼

很明顯,爬取的信息就在源代碼里,所以直接對網(wǎng)頁鏈接發(fā)起請求。這里請求頭偽裝我們優(yōu)先攜帶user-agent。
?三.通過請求拿到響應
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',
}
# 獲得響應
response = requests.get(url=url, headers=headers)
# 智能解碼
response.encoding = response.apparent_encoding
# 打印數(shù)據(jù)
print(response.text)

?四. 提取信息
針對返回數(shù)據(jù)的特點,我們現(xiàn)在有三種方法:
??1.正則表達式
正則表達式是對字符串(包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為“元字符”))操作的一種邏輯公式,就是用事先定義好的一些特定字符及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達對字符串的一種過濾邏輯。正則表達式是一種文本模式,該模式描述在搜索文本時要匹配的一個或多個字符串。簡單來說,利用一定的邏輯公式,過濾掉不需要的數(shù)據(jù),主要處理字符串。對于本題來說有點殺雞用牛刀了。簡單來示范一下:
首先導入re模塊
import re
接下來開始操作這堆"字符串"
re.compile()是用來優(yōu)化正則的,它將正則表達式轉化為對象,re.search(pattern, string)的調用方式就轉換為 pattern.search(string)的調用方式,多次調用一個正則表達式就重復利用這個正則對象,可以實現(xiàn)更有效率的匹配。需要搭配finditer()等一起使用,參數(shù)pattern : 正則表達式;,flags : 表示匹配模式。

右鍵點擊檢查進入Network頁面,主要是方便我們看清楚結構。

效果

這里寫的比較粗糙,因為大家會發(fā)現(xiàn)我們會大量在重復寫一個相同的篩選語句,所以就有那么一點機械重復的感覺,而且我們有專門對付這中HTML結構的工具,所以接下來咱們隆重介紹XPath!
??2.XPath
XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。XPath基于XML的樹狀結構,提供在數(shù)據(jù)結構樹中找尋節(jié)點的能力。起初XPath的提出的初衷是將其作為一個通用的、介于XPointer與XSL間的語法模型。但是XPath很快地被開發(fā)者采用來當作小型查詢語言。我們只要簡單理解為它主要是針對定位HTML中某部分位置的語言。
首先導入XPath
from lxml import etree
接下來開始操作

效果

這就是優(yōu)雅,對比上面,我們用三行代碼就完成了任務,由此可見,用對方法很重要。
?? 3.漂亮的湯(BeautifulSoup)<本次不使用>
?五.保存內容
這里就很簡單,基礎文件操作的知識,“行百里者半九十”,來吧,咱們直接一口氣寫完。
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('文章爬取完成')
效果

?六.總結(附完整代碼)
過今天的小案例,我們明白了,第一,思路一定要清楚,快準狠分析出接口鏈接,第二,提取數(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',
}
# 獲得響應
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('文章爬取完成')
以上就是一文學會利用python解決文章付費限制問題的詳細內容,更多關于Python解決文章付費限制的資料請關注腳本之家其它相關文章!
相關文章
python 利用pandas將arff文件轉csv文件的方法
今天小編就為大家分享一篇python 利用pandas將arff文件轉csv文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
詳解如何優(yōu)化和調整Python中Scrapy的性能
在本篇高級教程中,我們將深入探討如何優(yōu)化和調整Scrapy爬蟲的性能,以及如何處理更復雜的抓取任務,如登錄,處理Cookies和會話,以及避免爬蟲被網(wǎng)站識別和封鎖,需要的朋友可以參考下2023-09-09
Python Pandas中創(chuàng)建Series的三種方法總結
這篇文章主要介紹了Python Pandas中創(chuàng)建Series的三種方法總結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
講解Python的Scrapy爬蟲框架使用代理進行采集的方法
這篇文章主要介紹了講解Python的Scrapy爬蟲框架使用代理進行采集的方法,并介紹了隨機使用預先設好的user-agent來進行爬取的用法,需要的朋友可以參考下2016-02-02
淺談python中scipy.misc.logsumexp函數(shù)的運用場景
下面小編就為大家?guī)硪黄獪\談python中scipy.misc.logsumexp函數(shù)的運用場景。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06

