Python網(wǎng)絡(luò)爬蟲,我目前只能獲取單個文件,為啥?
共 3872字,需瀏覽 8分鐘
·
2024-06-02 09:00
回復(fù)“書籍”即可獲贈Python從入門到進階共10本電子書
大家好,我是皮皮。
一、前言
前幾天在Python鉆石交流群【Jethro Shen】問了一個Python網(wǎng)絡(luò)爬蟲的問題,這里拿出來給大家分享下。
他想獲取全部文件,但是實際上,只能獲取單個文件。
二、實現(xiàn)過程
這里【甯同學(xué)】給了一個解決思路,如下圖所示:
后來【瑜亮老師】也提供了一種方法。
直接一步到位。
下面是具體的代碼:
import requests
import time
from lxml import html
from lxml import etree
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 '
'Safari/537.36'}
def get_href_links(url):
response = requests.get(url, headers=headers)
page_content = response.content
dom_tree = html.fromstring(page_content)
href_links = dom_tree.xpath('//a/@href')
return href_links
url = "https://mp.weixin.qq.com/s/BANHI5apQzlpeTTdLZAIvg"
urls = set(get_href_links(url)[1:-5])
mp3_d_url = 'https://res.wx.qq.com/voice/getvoice?mediaid={}'
for url in urls:
response = requests.get(url, headers=headers)
html = response.text
selector = etree.HTML(html)
voice_encode_fileid = selector.xpath('//mpvoice/@voice_encode_fileid')[0]
name = selector.xpath('//mpvoice/@name')[0]
d_url = mp3_d_url.format(voice_encode_fileid)
response = requests.get(d_url)
if response.status_code == 200:
with open(name, 'wb') as f:
f.write(response.content)
print('{} 下載成功!'.format(name))
else:
print('{} 下載失?。?.format(name))
time.sleep(1) # 設(shè)置請求間隔時間為1秒,避免被封IP
順利地解決了粉絲的問題。
三、總結(jié)
大家好,我是皮皮。這篇文章主要盤點了一個Python網(wǎng)絡(luò)爬蟲的問題,文中針對該問題,給出了具體的解析和代碼實現(xiàn),幫助粉絲順利解決了問題。
最后感謝粉絲【Jethro Shen】提問,感謝【甯同學(xué)】、【瑜亮老師】、給出的思路和代碼解析,感謝【eric】等人參與學(xué)習(xí)交流。
【提問補充】溫馨提示,大家在群里提問的時候??梢宰⒁庀旅鎺c:如果涉及到大文件數(shù)據(jù),可以數(shù)據(jù)脫敏后,發(fā)點demo數(shù)據(jù)來(小文件的意思),然后貼點代碼(可以復(fù)制的那種),記得發(fā)報錯截圖(截全)。代碼不多的話,直接發(fā)代碼文字即可,代碼超過50行這樣的話,發(fā)個.py文件就行。
大家在學(xué)習(xí)過程中如果有遇到問題,歡迎隨時聯(lián)系我解決(我的微信:pdcfighting1),應(yīng)粉絲要求,我創(chuàng)建了一些高質(zhì)量的Python付費學(xué)習(xí)交流群和付費接單群,歡迎大家加入我的Python學(xué)習(xí)交流群和接單群!
小伙伴們,快快用實踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何問題,歡迎加我好友,我拉你進Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
------------------- End -------------------
往期精彩文章推薦:
歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請在后臺回復(fù)【入群】
萬水千山總是情,點個【在看】行不行
/今日留言主題/
隨便說一兩句吧~~
