問題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()