Rachel12138 2024-04-18 08:29 采纳率: 0%
浏览 69

用爬虫获取巨潮网上市公司年报,到获取pdf链接那一步,但运行后结果里只有变量名“code,secName,orgId,announcementId,announcementTitle,pdf_url”

用爬虫获取巨潮网上市公司年报,
到获取pdf链接那一步,顺利爬了两千多家之后,突然就爬不了了,代码可以运行,但运行后结果里只有变量名“code,secName,orgId,announcementId,announcementTitle,pdf_url”,没有具体的链接,这是什么情况呀?

img

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-18 08:29
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在尝试抓取巨潮网(http://www.cninfo.com.cn)上的上市公司年报PDF链接,但在某个时间点后,你发现爬虫不再返回PDF链接。这种情况可能是由于网站结构变化、反爬虫策略或其他未知因素导致的。为了帮你解决这个问题,我们可以逐步分析并调试代码。

    首先,确保你使用的爬虫库是最新的,并且检查是否有任何更新或更改可能影响爬取过程。在本例中,我们假设你正在使用requestsBeautifulSoup库进行网页抓取。确保已安装这两个库,如果没有,请使用以下命令安装:

    pip install requests beautifulsoup4
    

    接下来,让我们查看你的代码片段。根据提供的部分代码,我们可以看到你已经读取了一个CSV文件,其中包含公司的基本信息。然后,你将这些信息用于构造请求URL并提取PDF链接。这是一个基本的示例代码,展示了如何实现这一过程:

    import pandas as pd
    import requests
    from bs4 import BeautifulSoup
    
    # 读取公司信息的CSV文件
    df = pd.read_csv('firm_message.csv', dtype={'code': str})
    
    # 定义目标网页的URL模板
    url_template = "http://www.cninfo.com.cn/new/search/search公积金公告_detail.php?plate=&stockCode={}&reportType=20"
    
    # 遍历CSV中的每一行
    for index, row in df.iterrows():
        # 构造完整的URL
        stock_code = row['code']
        target_url = url_template.format(stock_code)
    
        # 发送GET请求
        response = requests.get(target_url, headers=headers, cookies=cookies)
        
        # 检查响应是否成功
        if response.status_code == 200:
            soup = BeautifulSoup(response.text, 'html.parser')
            
            # 在HTML中查找PDF链接
            pdf_link = soup.find('a', string='点击下载PDF格式')["href"]
            
            # 如果找到PDF链接,则打印出来
            if pdf_link:
                print(f"Company: {row['secName']}, PDF URL: {pdf_link}")
            else:
                print(f"No PDF link found for Company: {row['secName']}")
        else:
            print(f"Failed to fetch data from {target_url}")
    
    

    请确保你有正确的headerscookies设置,因为它们对于正确地访问页面至关重要。如果你之前已经定义了这些变量,请确保在这里使用它们。否则,你可能需要重新考虑你的登录或会话管理方式。

    如果你仍然遇到问题,可能是网站结构发生了改变,或者你需要处理JavaScript加载的内容。在这种情况下,你可能需要考虑使用像Selenium这样的工具来模拟浏览器行为。如果问题持续存在,那么可能需要定期检查巨潮网的HTML结构,以便针对其变化进行调整。

    如果你能提供更详细的代码,或者具体指出哪些部分出现问题,我可以提供更精确的帮助。同时,如果你能分享一些失败的URL,我可以帮你进一步分析问题所在。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月18日