用Python脚本自动采集金融网站当天发布的免费报告

大家好,我是皮皮。

一、前言

前几天在Python群【林生】问了一个Python数据采集的问题,需求如下:

想写一个脚本能自动采集下载当天发布的这个页面的这几个免费报告,能保存成这个标题的pdf文件,网站是手机号注册就能下载这些文件的,就是在我注册登录状态下,能采集下载。

image.png

二、实现过程

一开始以为网站有逆向,还觉得挺难的,后来发现完全是裸奔,就放心了,发布任务到接单裙,一下子就被抢了,毕竟送钱的单子,人见人爱,花见花开了,300元的爬虫单子,也很香了。

下面是部分核心代码,如果你也对这个感兴趣的话,欢迎私我拿全部源码。

1# -*- coding:utf-8 -*- 2""" 3开发环境:Python 3.86 4脚本名称:2023-07-07 报告厅baogaoting 5创建日期:202307076""" 7import datetime 8import os, sys, time, traceback 9import pathlib 10from parsel import Selector 11import requests 12 13headers = { 14 "xxx" 15} 16cookies = { 17 "xxx" 18} 19 20def _down_file(dow_url,file_name): 21 """ 22 :param dow_url: 下载链接 23 :param file_name: 图片绝对路径 包括后缀名 24 :return: 25 """ 26 re_重试次数=0 27 while True: 28 try: 29 response = requests.get(dow_url, headers=headers, cookies=cookies, timeout=10) 30 if response.status_code == 200: 31 break 32 elif response.status_code == 404: 33 break 34 else: 35 print(response.status_code) 36 re_重试次数 += 1 37 except Exception as e: 38 adress = sys.exc_info()[-1] # 异常地址 39 line_error = traceback.extract_tb(adress, limit=1)[-1][1] # 读取错误日志,最后一列的第二个元素即为模块出错行 40 print( 41 f"===================\n【异常原因】:{e}\n【异常类型】:{type(e)}\n【异常位置】:{line_error}\n===================") 42 time.sleep(5) 43 re_重试次数 += 1 44 if re_重试次数 >= 10: 45 response="" 46 break 47 if response: 48 with open(file_name, "wb+") as f: # , errors='ignore' 49 f.write(response.content) 50 else: 51 print(f"【跳过】:下载失败{file_name}") 52 53 54import winreg 55def get_desktop(): 56 key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders') 57 return winreg.QueryValueEx(key, "Desktop")[0] 58 59if __name__ == '__main__': 60 zm_path=get_desktop() 61 x_date = time.strftime("%Y-%m-%d") 62 list_file_path=list(pathlib.Path(x_date).rglob("*")) 63 dict_file_path={i.name:True for i in list_file_path} 64 65 url = "https://www.baogaoting.com/space/30909237" 66 for page in range(1,3): 67 params = { 68 "page": page, 69 "size": "15" 70 } 71 response = requests.get(url, headers=headers, cookies=cookies, params=params) 72 """ 73 此处略去多行代码 74 """ 75 print(f"【{title}】:热度{h3} 是当天上传的资料,准备访问下载{href_download}") 76 if href_download: 77 if not os.path.exists(f"{zm_path}//今日研报"): 78 os.makedirs(f"{zm_path}//今日研报",exist_ok=True) 79 title=title+ pathlib.Path(href_download).suffix 80 #print(href_download, h3,title) 81 for k in ["<", ">", "|", '"', "*", '\\', ":", "/", "?", "\n", "\r", "\t", "!", "☆"]: 82 date = date.replace(k, '').strip() 83 if dict_file_path.get(f"{date}_"+title): 84 print(f"【状态】:已经下载了哦,自动跳过") 85 continue 86 else: 87 _down_file(href_download, f"{zm_path}//今日研报//{title}") 88 else: 89 print(f"【状态】:链接{href_download} {title}无效,跳过不下载") 90 91 else: 92 print(f"【状态】:不是免费的,不下载") 93 time.sleep(0.5) 94 else: 95 print(f"【状态】:{date} 上传时间不符合,直接结束!") 96 break 97 input(f"【状态】:完成了哦,按任意键退出软件")

顺利地解决了粉丝的问题。

image.png

这样每天打开软件,就可以获取到想要的研报文件了,再也不用挨个去下载,解放双手。

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python网络爬虫实战的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

image.png

点赞
收藏

评论区

加载中...

相关推荐

盘点一个Pandas处理的基础题目

大家好,我是皮皮。一、前言前几天在Python星耀交流群【dcpeng】问了一个Pandas基础的问题,提问截图如下:原始代码如下:importpandasaspdfromdataclassesimportdataclass@dataclassclassC:a:int0b:int0@propertydefad

盘点一个使用超级鹰识别验证码并自动登录的案例

大家好,我是皮皮。一、前言前几天在Python钻石交流群【静惜】问了一个Python实现识别验证码并自动登录的问题,提问截图如下:!(https://uploadimages.jianshu.io/upload_images/26

使用Python统计下桌面某个文件夹下(含多层子文件夹)具体文件的数量(方法一)

大家好,我是皮皮。一、前言前几天在Python最强王者群【东哥】问了一个Python自动化办公的问题,一起来看看吧。这个是他自己在实际工作中遇到的需求,正好遇到了这个问题,想着用Python来实现下。二、实现过程这里【郑煜哲·Xiaopang】给了一个提示

盘点一个Python自动化办公需求——多个压缩包中Excel的合并

大家好,我是皮皮。一、前言这个事情还得从前几天在Python星耀群【Wing】问了一个Python自动化办公处理的问题,需求倒是不难,一起来看看吧。她的需求如下:我有多个压缩文件(zip格式),每个文件里面有3个excel表、表名是一样的。请教:如何解压文

麻烦问一下Python采集到的文本列表中有大量的 ', ' 符号 想这种符号怎么删除

大家好,我是皮皮。一、前言前几天在Python铂金流群【泅渡】问了一个Python字符处理的问题,一起来看看吧。问题描述:麻烦问一下Python采集到的文本列表中有大量的','符号想这种符号怎么删除?二、实现过程这里【不上班能干啥!】和【瑜亮老师】分别给了

Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除

大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这