问题1:requests.post(url)返回405错误
解决方法转载于:https://blog.csdn.net/qq505525372/article/details/8461209,问题有效解决
核心就是使用get方法:requests.get(url)
问题2:使用get方法成功获取网页之后,中文是乱码怎么办?
解决办法转载于:https://jingyan.baidu.com/article/915fc4145b5f5d51394b20c8.html,参考了以上网址中的方法,但是出现了新的问题:
解决办法转载于以下网址:https://blog.csdn.net/qingyuanluofeng/article/details/46514119,即如下编写代码
print ((r.text.encode(r.encoding).decode('gbk'))),成功搞定
最终发现selenium是正解:
先描述一下需求:批量下载一个网站上的第一集,第二集....到第322集MP3;手工点击分为两步骤,点击第几集,点击下载线路
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()