请用Python语言写一个巨潮资讯网批量下载PDF的程序

时间: 2023-09-26 16:07:04 浏览: 61
### 回答1: 下面是一个使用 Python 的简单程序,可以批量下载巨潮资讯网上的 PDF 文件: ``` import requests import os # 巨潮资讯网 PDF 文件的 URL 前缀 url_prefix = 'http://www.cninfo.com.cn' # PDF 文件的 URL 列表 pdf_urls = [ '...', '...', '...', ] # 创建一个文件夹,用于保存 PDF 文件 if not os.path.exists('pdfs'): os.mkdir('pdfs') # 遍历每个 PDF 文件的 URL for pdf_url in pdf_urls: pdf_data = requests.get(url_prefix + pdf_url).content pdf_path = os.path.join('pdfs', pdf_url.split('/')[-1]) with open(pdf_path, 'wb') as f: f.write(pdf_data) ``` 这个程序需要安装 `requests` 库,可以使用 `pip install requests` 命令进行安装。请注意,下载大量文件可能会对网站造成压力,并且有可能违反网站的使用规则,请谨慎使用。 ### 回答2: 巨潮资讯网是一个提供各类金融和财务信息的网站,用户可以通过该网站下载PDF格式的文件。如果需要批量下载PDF文件,可以使用Python语言编写一个程序来实现。 下面是一个示例程序的逻辑: 1. 安装必要的Python库,如requests和beautifulsoup4,用于发送请求和解析HTML页面。 2. 导入所需的库和模块。 ```python import requests from bs4 import BeautifulSoup ``` 3. 设置基本请求和网址信息。 ```python base_url = 'http://www.cninfo.com.cn' search_url = '/new/fulltextSearch?notautosubmit=&keyWord=' ``` 4. 编写函数来获取搜索结果页面中的PDF下载链接。 ```python def get_pdf_links(keyword): search_url = base_url + search_url + keyword response = requests.get(search_url) soup = BeautifulSoup(response.text, 'html.parser') pdf_links = [] # 查找所有包含PDF链接的元素 for link in soup.find_all('a'): if link.get('href') and link.get('href').endswith('.pdf'): pdf_links.append(link.get('href')) return pdf_links ``` 5. 编写函数来下载PDF文件。 ```python def download_pdf(url, save_path): response = requests.get(url) with open(save_path, 'wb') as file: file.write(response.content) ``` 6. 编写主程序来批量下载PDF文件。 ```python keyword = input('请输入搜索关键词:') pdf_links = get_pdf_links(keyword) for index, link in enumerate(pdf_links): save_path = f'pdf{index+1}.pdf' download_pdf(base_url + link, save_path) print(f'{save_path} 下载完成!') ``` 以上是一个简单的Python程序,它使用了requests库发送HTTP请求,使用beautifulsoup4库解析HTML页面,以及使用基本的逻辑来提取和下载PDF文件。 请注意,该程序可能需要根据巨潮资讯网的具体网页结构进行调整,以确保其正常工作。此外,为了节约时间和带宽,你也可以在程序中添加一些检查和筛选条件,以仅下载你感兴趣的PDF文件。 ### 回答3: 巨潮资讯网是一个提供上市公司信息的网站,其中的PDF文件包含了各种公司的财务报表、公告等重要资料。我们可以使用Python编写一个程序来实现批量下载巨潮资讯网上的PDF文件。 首先,我们需要使用`requests`库来发送HTTP请求,并使用`re`库来进行正则表达式匹配。 ```python import requests import re ``` 然后,我们需要定义一个函数来下载PDF文件。这个函数将接收一个URL作为参数,并从该URL获取PDF文件的二进制数据,然后将数据保存到本地文件。 ```python def download_pdf(url): response = requests.get(url) if response.status_code == 200: filename = re.findall(r'filename=(.+)', response.headers['Content-Disposition'])[0] with open(filename, 'wb') as f: f.write(response.content) print(f"已下载文件:{filename}") else: print(f"下载失败:{response.status_code}") ``` 接下来,我们需要获取巨潮资讯网上的PDF文件的URL。我们可以使用`requests`库发送一个GET请求到巨潮资讯网的搜索页面,并使用正则表达式从返回的HTML中提取PDF文件的URL。 ```python def get_pdf_urls(keyword): url = f'http://www.cninfo.com.cn/new/fulltextSearch/full?searchkey={keyword}&sdate=&edate=&isfulltext=false&sortName=date&sortType=desc&pageNum=1' response = requests.get(url) if response.status_code == 200: pdf_urls = re.findall(r'<a\s+href="(/disk/(.+?\.PDF))".*?>', response.text) return pdf_urls else: print(f"获取URL失败:{response.status_code}") return [] ``` 最后,我们可以编写一个主函数来控制整个下载过程。该函数将接收一个关键字作为参数,然后获取包含该关键字的PDF文件的URL,并使用`download_pdf`函数来下载这些文件。 ```python def main(keyword): pdf_urls = get_pdf_urls(keyword) for url, _ in pdf_urls: download_pdf(f'http://www.cninfo.com.cn{url}') ``` 我们可以通过调用`main`函数并传入关键字来运行程序。 ```python if __name__ == '__main__': keyword = input('请输入关键字:') main(keyword) ``` 请注意,为了运行这个程序,你需要在安装Python的基础上安装`requests`库和`re`库。可以使用以下命令来安装这些库: ``` pip install requests ```

相关推荐

以下是使用 Python 批量下载巨潮资讯网年报的代码示例: python import requests from bs4 import BeautifulSoup import os # 设置下载路径和文件夹名称 download_dir = "./巨潮资讯网年报下载/" if not os.path.exists(download_dir): os.makedirs(download_dir) # 构造请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"} # 获取年报下载链接 def get_annual_report_url(stock_code): url = f"http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1088?tdate=2021-05-31&orgid=&plate=&stock={stock_code}&category=ZL&type=ALL&sortName=&sortType=&pageSize=30&pageNum=1" response = requests.get(url, headers=headers) response_json = response.json() if response_json["resultcode"] == "200": annual_report_url = response_json["records"][0]["adjunctUrl"] return annual_report_url # 下载年报 def download_annual_report(stock_code): annual_report_url = get_annual_report_url(stock_code) if annual_report_url: file_name = f"{stock_code}.pdf" file_path = os.path.join(download_dir, file_name) if not os.path.exists(file_path): response = requests.get(annual_report_url, headers=headers) with open(file_path, "wb") as f: f.write(response.content) print(f"{stock_code} 下载完成") else: print(f"{stock_code} 已存在") else: print(f"{stock_code} 无年报链接") # 下载指定股票代码的年报 def download_annual_report_by_codes(codes): for code in codes: download_annual_report(code) # 读取股票代码文件 def read_codes_from_file(file_path): with open(file_path, "r", encoding="utf-8") as f: codes = f.readlines() codes = [code.strip() for code in codes] return codes # 主函数 if __name__ == '__main__': # 从文件中读取股票代码 codes = read_codes_from_file("codes.txt") # 下载年报 download_annual_report_by_codes(codes) 以上代码会从 codes.txt 文件中读取股票代码,并依次下载每个股票的年报到 download_dir 文件夹中。请注意,需要先在巨潮资讯网上注册并获取接口访问权限。
可以使用 Python 中的 requests 和 BeautifulSoup 库来实现批量下载巨潮资讯网指定年份的年报代码。具体步骤如下: 1. 导入需要的库 python import os import requests from bs4 import BeautifulSoup 2. 定义需要爬取的 URL python url = 'http://www.cninfo.com.cn/new/hisAnnouncement/query' 3. 构造请求参数 python params = { 'stock': '', 'searchkey': '', 'plate': '', 'category': 'category_ndbg_szsh;', 'pageNum': 1, 'pageSize': 30, 'tabName': 'fulltext', 'sortName': '', 'sortType': '', 'limit': '', 'showTitle': '', 'seDate': 'xxxx-01-01~xxxx-12-31', # 替换为需要爬取的年份 } 其中,seDate 参数指定需要爬取的年份。需要替换为你需要爬取的年份。 4. 发送请求并解析页面 python res = requests.get(url, params=params) soup = BeautifulSoup(res.text, 'html.parser') 5. 获取总页数,并循环遍历每一页 python total_pages = int(soup.select_one('.total-pages').text) for page in range(total_pages): params['pageNum'] = page + 1 res = requests.get(url, params=params) soup = BeautifulSoup(res.text, 'html.parser') # 解析页面获取需要下载的文件 URL 6. 解析页面获取需要下载的文件 URL python for tr in soup.select('.table-search-list tr'): file_url = tr.select_one('.download-links a')['href'] file_name = tr.select_one('.download-links a')['download'] # 下载文件 7. 下载文件 python res = requests.get(file_url) with open(file_name, 'wb') as f: f.write(res.content) 完整代码如下: python import os import requests from bs4 import BeautifulSoup url = 'http://www.cninfo.com.cn/new/hisAnnouncement/query' params = { 'stock': '', 'searchkey': '', 'plate': '', 'category': 'category_ndbg_szsh;', 'pageNum': 1, 'pageSize': 30, 'tabName': 'fulltext', 'sortName': '', 'sortType': '', 'limit': '', 'showTitle': '', 'seDate': 'xxxx-01-01~xxxx-12-31', # 替换为需要爬取的年份 } res = requests.get(url, params=params) soup = BeautifulSoup(res.text, 'html.parser') total_pages = int(soup.select_one('.total-pages').text) for page in range(total_pages): params['pageNum'] = page + 1 res = requests.get(url, params=params) soup = BeautifulSoup(res.text, 'html.parser') for tr in soup.select('.table-search-list tr'): file_url = tr.select_one('.download-links a')['href'] file_name = tr.select_one('.download-links a')['download'] file_name = os.path.join('annual_reports', file_name) if not os.path.exists(file_name): res = requests.get(file_url) with open(file_name, 'wb') as f: f.write(res.content) 需要注意的是,下载的文件保存在 annual_reports 文件夹下,如果该文件夹不存在需要先创建该文件夹。

最新推荐

Python批量提取PDF文件中文本的脚本

主要为大家详细介绍了Python批量提取PDF文件中文本的脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

python自然语言处理(NLP)入门.pdf

NLTK是Python的⾃然语⾔处理⼯具包,在NLP领域中,最常使⽤的⼀个Python库。 简单来说,⾃然语⾔处理(NLP)就是开发能够理解⼈类语⾔的应⽤程序或服务。 这⾥讨论⼀些⾃然语⾔处理(NLP)的实际应⽤例⼦,如语⾳识别、...

用Python下载一个网页保存为本地的HTML文件实例

今天小编就为大家分享一篇用Python下载一个网页保存为本地的HTML文件实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

python实现图片批量压缩程序

本文实例为大家分享了python实现图片批量压缩程序的具体代码,供大家参考,具体内容如下 说明 运行环境:Win10 Pycharm 程序没有用到面向对象编程方法,只是简单的面向过程设计 用到的模块:PIL、os、sys 使用...

基于Python的一个自动录入表格的小程序

主要介绍了基于Python的一个自动录入表格的小程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

DAC简介及参考电路PPT学习教案.pptx

DAC简介及参考电路PPT学习教案.pptx

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

OceanBase数据库简介及原理解析

# 1. OceanBase数据库概述 ## 1.1 OceanBase数据库的发展历程 OceanBase数据库是由阿里巴巴集团自主研发的一款分布式关系型数据库系统,起源于阿里集团的业务需求和技术挑战。自2010年开始研发,经过多年的迭代和优化,OceanBase已经成为阿里巴巴集团重要的核心数据库产品之一。在实际的业务场景中,OceanBase已经被广泛应用于金融、电商、物流等各个领域。 ## 1.2 OceanBase数据库的特点和优势 OceanBase数据库具有以下特点和优势: - **分布式架构**:OceanBase采用多副本分布式架构,可以实现高可用和数据容灾。 -

python的pandas读取excel怎么将excel表里的列从1开始而不是0

在 Pandas 中,数据框的列默认从0开始编号,但我们可以通过自定义函数来进行数据列的转换。可以先将读取的数据框列的第一个值设为1,然后对后续列进行递增处理。 以下是示例代码: ```python import pandas as pd # 读取 Excel 文件 df = pd.read_excel('your_excel_file.xlsx') # 定义函数将列从1开始 def reset_column(x): return str(int(x) + 1) # 应用函数到所有列名 df = df.rename(columns=reset_column) # 打印数据框

第三章薪酬水平、薪酬系统的运行与控制.pptx

第三章薪酬水平、薪酬系统的运行与控制.pptx