編寫腳本,批量下載「明朝那些事-有聲書」,問題總結

問題1:requests.post(url)返回405錯誤html

解決方法轉載於:https://blog.csdn.net/qq505525372/article/details/8461209,問題有效解決web

核心就是使用get方法:requests.get(url)chrome

 

問題2:使用get方法成功獲取網頁以後,中文是亂碼怎麼辦?post

解決辦法轉載於:https://jingyan.baidu.com/article/915fc4145b5f5d51394b20c8.html,參考了以上網址中的方法,可是出現了新的問題:網站

 

解決辦法轉載於如下網址:https://blog.csdn.net/qingyuanluofeng/article/details/46514119,即以下編寫代碼url

print ((r.text.encode(r.encoding).decode('gbk'))),成功搞定spa

 

最終發現selenium是正解:.net

先描述一下需求:批量下載一個網站上的第一集,第二集....到第322集MP3;手工點擊分爲兩步驟,點擊第幾集,點擊下載線路code

import os
from selenium import webdriver
import time

chromedriver = "F:/chromedriver_win32/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)


def download_batch():
    for i in range(25, 322):
### 先分析了一下網頁源代碼,發現命名有規律可循,這裏須要考察命名規律的緣由是同一頁面有「同名,可是功能不一樣的按鈕」
### 這裏也能夠使用tag先定位,而後使用get_attibute的方法獲得url,而後跳轉訪問 driver.get(
"網站名{i}.html".format(i=i))
     ### 這裏多了一層iframe, 須要先定位iframe,而後獲得調準的src,而後跳過去,找下載線路 src
= driver.find_elements_by_tag_name("iframe")[1].get_attribute("src") driver.get(src) try: driver.find_element_by_link_text("本地1線").click()
       ###下載等待,這裏設置了5分鐘,即300s time.sleep(
300) except: continue download_batch()
相關文章
相關標籤/搜索