哪個網(wǎng)站做外貿(mào)好互聯(lián)網(wǎng)營銷師
電視貓上面有《慶余年》分集劇情,如何批量爬取下來呢?
先找到每集的鏈接地址,都在這個class="epipage clear"的div標簽里面的li標簽下面的a標簽里面:
<a href="/drama/Yy0wHDA=/episode">1</a>
這個鏈接是相對地址,前面加上https://www.tvmao.com,才是完整的URL地址;
每集的標題在p標簽里面:
<p class="epi_t">
第7集:范閑赴詩會作絕句驚艷京城
</p>
在kimi中輸入提示詞:
你是一個Python編程專家,要完成以下任務的Python腳本的編寫:
打開網(wǎng)頁:https://www.tvmao.com/drama/Yy0wHDA=/episode
在源代碼中定位class="epipage clear"的div標簽;
提取div標簽里面所有a標簽的href值,前面加上”https://www.tvmao.com”,構成網(wǎng)頁下載URL;
解析URL,定位class="epi_t"的p標簽,提取其文本內(nèi)容,作為txt文檔文件名;提取class="clear epi_c"的article標簽里面的文本內(nèi)容,保存為txt文檔到D盤下的qyn文件夾;
注意:
每下載一個網(wǎng)頁,隨機暫停1-10秒;
網(wǎng)頁文件名要進行處理,去除不符合window系統(tǒng)文件命名規(guī)范的特殊字符,處理文件名時要確保文件名中不包含任何特殊字符或不可見字符,可以通過使用strip()方法來去除字符串兩端的空白字符,包括換行符和空格;
每一步都要輸出信息到屏幕
要有應對反爬蟲的措施,設置請求頭;
生成的源代碼如下:
import requests
from bs4 import BeautifulSoup
import random
import time
import os
# 目標網(wǎng)頁URL
url = 'https://www.tvmao.com/drama/Yy0wHDA=/episode'
# 設置請求頭,模擬瀏覽器訪問
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
# 發(fā)送HTTP請求
response = requests.get(url, headers=headers)
response.raise_for_status() # 如果請求失敗,將拋出異常
# 解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 定位class="epipage clear"的div標簽
div_epipage = soup.find('div', class_='epipage clear')
# 提取所有a標簽的href值,并構成完整的網(wǎng)頁下載URL
episode_links = []
for a_tag in div_epipage.find_all('a', href=True):
episode_url = 'https://www.tvmao.com' + a_tag['href']
episode_links.append(episode_url)
# 創(chuàng)建文件夾
d盤_qyn文件夾路徑 = 'D:\\qyn'
if not os.path.exists(d盤_qyn文件夾路徑):
os.makedirs(d盤_qyn文件夾路徑)
# 下載并保存每個劇集的文本內(nèi)容
for episode_url in episode_links:
print(f'正在下載:{episode_url}')
# 發(fā)送HTTP請求
episode_response = requests.get(episode_url, headers=headers)
episode_response.raise_for_status()
# 解析HTML
episode_soup = BeautifulSoup(episode_response.text, 'html.parser')
# 解析文件名
epi_t = episode_soup.find('p', class_='epi_t')
file_name = epi_t.text.strip().replace(':', '').replace('/', '-').replace('\\', '-').replace('|', '-') # 處理文件名
# 解析文本內(nèi)容
epi_c = episode_soup.find('article', class_='clear epi_c')
text_content = epi_c.get_text(strip=True)
# 保存到txt文檔
file_path = os.path.join(d盤_qyn文件夾路徑, file_name + '.txt')
with open(file_path, 'w', encoding='utf-8') as file:
file.write(text_content)
print(f'已保存:{file_path}')
# 隨機暫停1-10秒
time.sleep(random.randint(1, 10))
print('所有劇集文本已下載完畢。')