【发布时间】:2017-06-26 07:08:27
【问题描述】:
这是我的代码:
import requests
import time
from bs4 import BeautifulSoup as bs
import urllib.request
user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'
headers={'User-Agent':user_agent,}
_URL = 'http://papers.xtremepapers.com/CIE/Cambridge%20International%20A%20and%20AS%20Level/Chemistry%20%289701%29/'
r = requests.get(_URL)
soup = bs(r.text)
urls = []
names = []
for i, link in enumerate(soup.findAll('a')):
_FULLURL = _URL + (link.get('href'))
if _FULLURL.endswith('.pdf'):
urls.append(_FULLURL)
names.append(soup.select('a')[i].attrs['href'])
names_urls = zip(names, urls)
for name, url in names_urls:
print (url)
rq = urllib.request.Request(url,None,headers)
res = urllib.request.urlopen(rq)
pdf = open("pdfs/" + (name), 'wb')
pdf.write(res.read())
pdf.close()
print("completed")
PDF 正在下载,但当我打开它们时,我得到一个
error
PS。我是python新手,如果这是菜鸟的错误,请原谅我
【问题讨论】:
-
如果您缺少扩展名,也许您应该尝试将
pdf = open("pdfs/" + (name), 'wb')更改为pdf = open("pdfs/"+name+".pdf", 'wb')。 -
@DatHydroGuy 为什么会这样?有点是有点,所以当然你可以从没有任何特殊库的pdf二进制内容创建一个pdf文件。
-
@aeratedfrisbee 您应该检查响应状态代码和内容类型标头,以确保在将其保存到磁盘之前获得所需的内容。
-
@bruno-desthuilliers 你是对的!我完全错过了原始文件已经是 .pdf 格式 - 我认为这是我们正在谈论的 HTML 到 PDF 的转换。我已经删除了我原来的评论以避免混淆。道歉。
-
@brunodesthuilliers 我该怎么做?
标签: python html pdf beautifulsoup python-requests