首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CAG下载PDF

从CAG下载PDF
EN

Stack Overflow用户
提问于 2022-10-07 10:40:05
回答 1查看 34关注 0票数 0

我试图从CAG网站下载多个PDF(链接https://cag.gov.in/en/state-accounts-report?defuat_state_id=64)。我使用以下代码-

代码语言:javascript
复制
url='https://cag.gov.in/en/state-accounts-report?defuat_state_id=64'

response=requests.get(url)

response

soup=BeautifulSoup(response.text,'html.parser')

soup

for link in soup.select("a[href$='.pdf']"):
   
    print(link)

for link in soup.select("a[href$='.pdf']"):    
    
    filename = os.path.join(folder_location,link['href'].split('/')[-1])  

     
    with open(filename, 'wb') as f:

      f.write(requests.get(urljoin(url,link['href'])).content)

这是给我所有的PDF从整个页面,我想下载PDF下的标签‘每月关键指标’只。请建议对代码进行必要的修改。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-07 12:04:42

您可以尝试缩小选择链接的选项卡。选项卡id可以使用

代码语言:javascript
复制
tabId = soup.find(
    lambda t: t.name == 'a' and t.get('href') and 
    t.get('href').startswith('#tab') and # just in case
    'Monthly Key Indicators' == t.get_text(strip=True)
).get('href')

(或者,如果它总是相同的id,则只需将其设置为tabId = "#tab-360"。)然后,您只需将选择更改为

代码语言:javascript
复制
soup.select(f"{tabId} a[href$='.pdf']")

但是你不是在用每个报告下载相同的3x文件吗?您可以将for-循环更改为只从以" download“作为文本的链接中下载:

代码语言:javascript
复制
pdfLinks = soup.select(f"{tabId} a[href$='.pdf']")
pdfLinks = [pl for pl in pdfLinks if pl.get_text(strip=True) == 'Download']
for link in pdfLinks:
  #download
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73985919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档