为了账号安全,请及时绑定邮箱和手机立即绑定

为什么当我尝试在此网页上抓取 PDF 的链接时,我只得到一个空列表作为回报?

为什么当我尝试在此网页上抓取 PDF 的链接时,我只得到一个空列表作为回报?

慕斯王 2022-06-07 17:56:28
我正在尝试在此网页上抓取指向 PDF 的链接。但是,我得到一个空列表作为回报。对此问题的任何帮助将不胜感激。这是我使用的代码:import requestsfrom bs4 import BeautifulSoupimport lxmlimport csvurl="https://occ.ca/our-publications/"source=requests.get(url).textsoup=BeautifulSoup(source,'lxml')match=soup.find_all('div')print(match)
查看完整描述

3 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

以下


import requests

from bs4 import BeautifulSoup


response = source = requests.get('https://occ.ca/our-publications/', headers={'User-Agent': 'Mozilla'})

if response.status_code == 200:

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

    pdfs = soup.findAll('div', {"class": "publicationoverlay"})

    links = [pdf.find('a').attrs['href'] for pdf in pdfs]

    print(links)

输出


['https://occ.ca/wp-content/uploads/The-Great-Mosaic-Reviving-Ontarios-Regional-Economies.pdf', 'https://occ.ca/wp-content/uploads/OCC-Letter-in-support-of-the-OPG-Pickering-Nuclear-Nomination.pdf', 'https://occ.ca/wp-content/uploads/OCC-Beverage-Alcohol-Report.pdf', 'https://occ.ca/wp-content/uploads/Industrial-Electricity-Rates.pdf', 'https://occ.ca/wp-content/uploads/OCC-Letter_Strategic-Approach-to-Alcohol-Sales.pdf', 'https://occ.ca/wp-content/uploads/OCC-Submission-Modernizing-Ontarios-Environmental-Assessment-Program.pdf', 'https://occ.ca/wp-content/uploads/OCC-Letter-on-Ticket-Sales-Act.pdf', 'https://occ.ca/wp-content/uploads/2018-2019-Policy-Report-Card.pdf', 'https://occ.ca/wp-content/uploads/Letter-on-Right-to-Repair-May-1.pdf', 'https://occ.ca/wp-content/uploads/Federal-Carbon-Tax-Transparency-Act-2019-OCC.pdf', 'https://occ.ca/wp-content/uploads/Waste-and-Litter-Submission-_-Final.pdf', 'https://occ.ca/wp-content/uploads/Supporting-Ontarios-Budding-Cannabis-Industry.pdf']


查看完整回答
反对 回复 2022-06-07
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

该页面返回 403(禁止请求)和一些错误页面。如果您添加用户代理标头,它会返回 200(OK)以及您需要的页面:

requests.get(url, headers={'User-Agent': 'Mozilla'})


查看完整回答
反对 回复 2022-06-07
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

那是因为在您的原始请求中,您收到了 403 禁止请求。默认情况下,Python 请求会添加如下标头:


{

 'User-Agent': 'python-requests/2.21.0', 

 'Accept-Encoding': 'gzip, deflate', 

 'Accept': '*/*', 

 'Connection': 'keep-alive', 

 'Content-Length': '40', 

  'Content-Type': 'application/json'

 }

某些网站会阻止此类标头。所以你得到一个 403 HTTP 错误。


source=requests.get(url, headers={'User-Agent': 'Mozilla'})

添加这将解决该问题,您将获得所需的内容。


查看完整回答
反对 回复 2022-06-07
  • 3 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号