【发布时间】:2022-01-04 09:35:49
【问题描述】:
我有大约 900 页,每页包含 10 个按钮(每个按钮都有 pdf)。我想下载所有的 pdf - 程序应该浏览所有页面并一一下载 pdf。 在此,一些pdf(随机)没有下载(代码一直到最后一页)但是一些页面中随机的一些pdf没有下载 大约 4521 个 pdf 正在下载 9000 个 pdf
仅搜索 .pdf 的代码,但我的 href 没有 .pdf page_no(1 到 900)。
https://bidplus.gem.gov.in/bidlists?bidlists&page_no=3
这是网站,下面是链接:
投标编号:GEM/2021/B/1804626
下面是我的代码
import requests
from bs4 import BeautifulSoup as bs
end_number = 900
current_page = 1
pdf_links = {}
path = '<your path>'
with requests.Session() as s:
while True:
r = s.get(f'https://bidplus.gem.gov.in/bidlists?bidlists&page_no={current_page}')
soup = bs(r.content, 'lxml')
for i in soup.select('.bid_no > a'):
pdf_links[i.text.strip().replace('/', '_')] = 'https://bidplus.gem.gov.in' + i['href']
#print(pdf_links)
if current_page == 1:
num_pages = int(soup.select_one('.pagination li:last-of-type > a')['data-ci-pagination-page'])
print(num_pages)
if current_page == num_pages or current_page > end_number:
break
current_page+=1
for k,v in pdf_links.items():
with open(f'{path}/{k}.pdf', 'wb') as f:
r = s.get(v)
f.write(r.content)
【问题讨论】:
-
当您的 URL 引用一个文件时,您应该考虑流式传输响应。此外,您正在使用会话引用 (s) 关闭后。你的 for 循环应该缩进
-
@JCaesar 请通过更改代码来回答它...
-
我会,但我无法测试它,因为该 URL 目前没有响应 (ERR_CONNECTION_TIMED_OUT)
-
@JCaesar 只需使用代理站点或进行代码更改我将测试 mmyself 并让你知道
-
@JCaesar 出现语法错误
标签: python python-3.x pdf