从网站获取pdf文件以使用BeautifulSoup4进行剪贴

时间:2020-07-20 09:39:20

标签: python web-scraping beautifulsoup

该网页的html源如下

<html>
<body>
   <embed name= "random for each page" type = "application/pdf" src = "somesrc" internalid = "random">
</body>
</html>

我需要从pdf文件中抓取具有不同数据(它们具有不同的名称和内部标识)的多个页面的数据。我试图find_all嵌入标签,但是没有用

2 个答案:

答案 0 :(得分:0)

尝试仅过滤掉所有类型属性为“ application / pdf”的标签,然后提取src属性以下载pdf

像这样

pdfTags = soup.findAll(attrs={"type" : "application/pdf"})
for p in pdfTags:
    print(p['src'])

答案 1 :(得分:0)

要下载文件,可以使用“请求”包。 BeautifulSoup是一个用于解析HTML而不是下载文件的库。

现在您还没有提供任何信息来获取URL本身。我强烈敦促您发布一些您试图获取URL的代码,这样,我们不仅会在您不了解答案的情况下为您提供答案。

因此,这是您可以用来下载它们的代码。我还假设您已经能够从PyPDF获取所需的数据。您应该考虑的另一件事是在使用PyPDF提取数据之前,用于定位下载文件的OS模块。这样,您就可以自动处理文件。

代码示例

import requests
r = requests.get(url, Stream=True)
with open("filename.pdf",'wb') as pypdf:
    for chunk in r.iter_content(chunk_size=1024)
      if chunk: 
         pypdf.write(ch)

解释

我们在pdf文件的URL上使用请求的get方法。 stream=True,这将延迟文件的下载,直到我们要求它为止。不过,它会先下载二进制标头,然后等待我们告诉它如何处理二进制数据主体。

r.iter_content-将文件分割成1024个字节的块。

然后我们在这些大块中循环以写入文件。