【发布时间】:2017-05-03 09:06:56
【问题描述】:
希望这将是一个简单的。我正在尝试进行一些网络抓取,从页面下载所有 pdf 文件。目前我正在从体育页面上抓取文件进行练习。我使用 Automatetheboringstuff + 来自另一个用户 (retrieve links from web page using python and BeautifulSoup) 的帖子来编写此代码。
import requests
import time
from bs4 import BeautifulSoup, SoupStrainer
r = requests.get('http://secsports.go.com/media/baseball')
soup = BeautifulSoup(r.content)
for link in BeautifulSoup(r.text, parseOnlyThese=SoupStrainer('a')):
if link.has_attr('href'):
if 'pdf' in str(link):
image_file = open(os.path.join('E:\\thisiswhereiwantmypdfstogo', os.path.basename(link['href'])), 'wb')
for chunk in r.iter_content(100000):
image_file.write(chunk)
image_file.close()
输出到我指定的目录的文件都在那里,这很好,但是所有文件的文件大小都是相同的,当我打开 AdobePro 来查看它们时,我收到一条错误消息:
“Adobe Acrobat 无法打开“FILENAMEHERE”,因为它不是受支持的文件类型或文件已损坏(例如,它是作为电子邮件附件发送的并且未正确解码)。”
提示我写入过程出现问题的一个小提示是,在运行 image_file.write(chunk) 之后,它为每个文件输出相同的数字。
这是文件夹中 pdf 的样子:
我想我只需要在编写过程中的某处添加一个参数即可使其正常工作,但我不知道它会是什么。我用谷歌搜索了一个答案,也在这里搜索了一下,但找不到答案。
谢谢!
【问题讨论】:
-
也许在库
from urllib.request import urlretrieve函数urlretrieve(link)可以帮助下载pdf编辑:docs.python.org/3/library/urllib.request.html#legacy-interface如果你需要一些关于函数的信息
标签: python pdf web-scraping python-requests