你的剧本目前的问题是:url有一个尾随的/在请求时给出一个无效的页面,而不是列出要下载的文件。

soup.select(...)中的CSS选择器正在选择具有属性webpartid的div,该属性在链接文档中的任何位置都不存在。

您将加入URL并引用它,即使页面中的链接是作为绝对URL给出的,它们不需要引用。

try:...except:块将阻止您看到在尝试下载文件时生成的错误。在没有特定异常的情况下使用except块是不好的做法,应该避免。

修改后的代码版本将获得正确的文件并尝试下载它们,如下所示:from bs4 import BeautifulSoup

# Python 3.x

from urllib.request import urlopen, urlretrieve, quote

from urllib.parse import urljoin

# Remove the trailing / you had, as that gives a 404 page

url = 'https://www.rbi.org.in/Scripts/bs_viewcontent.aspx?Id=2009'

u = urlopen(url)

try:

html = u.read().decode('utf-8')

finally:

u.close()

soup = BeautifulSoup(html, "html.parser")

# Select all A elements with href attributes containing URLs starting with http://

for link in soup.select('a[href^="http://"]'):

href = link.get('href')

# Make sure it has one of the correct extensions

if not any(href.endswith(x) for x in ['.csv','.xls','.xlsx']):

continue

filename = href.rsplit('/', 1)[-1]

print("Downloading %s to %s..." % (href, filename) )

urlretrieve(href, filename)

print("Done.")

但是,如果运行此命令,您会注意到抛出了urllib.error.HTTPError: HTTP Error 403: Forbidden异常,即使该文件可以在浏览器中下载。

起初我以为这是一个推荐检查(为了防止热链接),但是如果你在浏览器(如Chrome开发工具)中按要求观看,你会注意到

初始的http://请求也在那里被阻止,然后Chrome尝试对同一个文件发出https://请求。

换句话说,请求必须通过HTTPS才能工作(不管页面中的url怎么说)。要解决这个问题,您需要在使用请求的URL之前将http:重写为https:。以下代码将正确修改url并下载文件。我还添加了一个变量来指定输出文件夹,该文件夹使用os.path.join添加到文件名中:import os

from bs4 import BeautifulSoup

# Python 3.x

from urllib.request import urlopen, urlretrieve

URL = 'https://www.rbi.org.in/Scripts/bs_viewcontent.aspx?Id=2009'

OUTPUT_DIR = '' # path to output folder, '.' or '' uses current folder

u = urlopen(URL)

try:

html = u.read().decode('utf-8')

finally:

u.close()

soup = BeautifulSoup(html, "html.parser")

for link in soup.select('a[href^="http://"]'):

href = link.get('href')

if not any(href.endswith(x) for x in ['.csv','.xls','.xlsx']):

continue

filename = os.path.join(OUTPUT_DIR, href.rsplit('/', 1)[-1])

# We need a https:// URL for this site

href = href.replace('http://','https://')

print("Downloading %s to %s..." % (href, filename) )

urlretrieve(href, filename)

print("Done.")

python beautifulsoup下载_使用Python和BeautifulSoup从网页下载.xls文件相关推荐

  1. python下载网页中的pdf文件_【Python】Python的urllib模块、urllib2模块批量进行网页下载文件...

    由于需要从某个网页上下载一些PDF文件,但是需要下载的PDF文件有几百个,所以不可能用人工点击来下载.正好Python有相关的模块,所以写了个程序来进行PDF文件的下载,顺便熟悉了Python的url ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. python 小说爬虫_用Python爬虫下载整本小说

    1 / 写在前面的话 / 如今网络上很多小说网站都有免费的小说阅读,但是它不提供下载全本的服务,目的也是为了获得更多的流量,资源君就不服了,今天刚好看到一个小说网站,就想弄本小说来看看,于是拿起电脑, ...

  4. spotify音乐下载_使用Python和R对音乐进行聚类以在Spotify上创建播放列表。

    spotify音乐下载 Spotify is one of the most famous Music Platforms to discover new music. The company use ...

  5. python安装包_迈出Python学习第一步:Python开发环境的下载与安装

    所谓"磨刀不误砍柴工"."工欲善其事,必先利其器",都在告诉我们一个道理:要做好一个事情,事先做好充分的准备工作是非常重要的.所以在我们正式学习用Python编 ...

  6. python模块下载1002python模块下载_【Python】Python的urllib模、urllib2模块的网络下载文件...

    因为需要从一些下载一个页PDF文件.但是需要下载PDF有数百个文件,这是不可能用人工点击下载.只是Python有相关模块,所以写一个程序PDF文件下载,顺便熟悉Python的urllib模块和ulrl ...

  7. python初学者教程下载_初学者Python教程

    python初学者教程下载 Welcome to Python Tutorial for Beginners. You are probably here because you think prog ...

  8. python虚拟机下载_虚拟机 python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 打开文件--打开bashrc--加入#addexportvirtualenvwr ...

  9. 系统架构设计师与系统分析师历年实体分析与解答下载_做Python数据分析5年了,复制粘贴是我最牛逼的技能,直到看到这些公众号,我学习了...

    上次跟一个学妹聊天,问她平时怎么学习,她反手甩给我这几个公众号,说很喜欢里面的技术文章,推荐给大家 深度学习这件小事 机器学习,深度学习,自然语言处理,计算机视觉--这些小事情,只要你主动,我们就有可 ...

  10. python和nltk自然语言处理百度云盘下载_把python自然语言处理的nltk_data打包到360云盘,然后共享给朋友们...

    回家前,把python自然语言处理的nltk_data打包到360云盘,然后共享给朋友们,省的大家像我一样浪费时间. 一次性下载解压后即可使用.官方的nltk.download()老是下载失败.无数遍 ...

最新文章

  1. 安装配置mysql-proxy
  2. iOS UICollectionView 使用
  3. Windows 远程桌面管理
  4. 防止IE6出现BUG的十种常见解决方法
  5. 通过配置ssh深刻理解puppet的语法及工作机制
  6. JS跨页面调用变量的方法
  7. java 分级显示_上级部门与下级部门的分类显示
  8. Redis中的value包含中文显示的问题?
  9. 30件你不知道可以通过Internet来办到的事
  10. 成员方法的使用及其调用
  11. matlab二阶系统的单位阶跃响应为,2 二阶系统阶跃响应
  12. MATLAB如何导出高分辨率的模型图片、PDF
  13. 【视频】离职创业感悟
  14. msdn突然无法使用,打开的页面无法正常显示。
  15. 用HTML实现旋转地球,使用CSS3和贴图实现的旋转的蓝色地球
  16. 视频分割算法在移动端如何应用
  17. 地铁三号线 - 95后的财务自由
  18. 浙江省2级C语言等级考试答案,2021年秋浙江省计算机等级考试二级C试卷及答案...
  19. 2022最新最全的pytest配置文件pytest.ini
  20. EAUML日拱一卒-微信小程序实战:位置闹铃 (17)-保存和取出设定信息

热门文章

  1. 微信服务商下各种支付
  2. i3处理器_酷睿i3-9350K竟然是隐藏的绝世高手 Intel偷偷加了buff
  3. google云盘资料大文件下载
  4. 将ubuntu终端打开的GUI图形界面窗口显示在windows上
  5. Learning From Video DRL OpenAI Five
  6. 应用之星:十问十答,让你更快了解H5制作和app开发
  7. 权限开发(demo使用教程)
  8. 东北大学计算机课程,东北大学《操作系统原理》2016春季课程主页
  9. 5min彻底搞懂vue中的keep-alive
  10. SETUP EXE 安装文件加密器V4.0