• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LeahChao
真正的高贵应该是优于过去的自己
博客园    首页    新随笔    联系   管理    订阅  订阅
编写脚本,批量下载“明朝那些事-有声书”,问题总结

问题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()

 

 

 

 

 

posted on 2021-01-02 09:29  Leah-chao  阅读(61)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3