该网页的html源如下
<html>
<body>
<embed name= "random for each page" type = "application/pdf" src = "somesrc" internalid = "random">
</body>
</html>
我需要从pdf文件中抓取具有不同数据(它们具有不同的名称和内部标识)的多个页面的数据。我试图find_all嵌入标签,但是没有用
答案 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个字节的块。
然后我们在这些大块中循环以写入文件。