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

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: Python脚本自动采集研报

大家好,我是皮皮。

### 一、前言

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

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

![image.png](https://upload-images.jianshu.io/upload_images/26239789-53bf2eba5a4c2ddf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

### 二、实现过程

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

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

```

# -*- coding:utf-8 -*-

"""

开发环境:Python 3.86

脚本名称:2023-07-07 报告厅baogaoting

创建日期:2023年07月07日

"""

import datetime

import os, sys, time, traceback

import pathlib

from parsel import Selector

import requests

headers = {

"xxx"

}

cookies = {

"xxx"

}

def _down_file(dow_url,file_name):

"""

:param dow_url:   下载链接

:param file_name:  图片绝对路径 包括后缀名

:return:

"""

re_重试次数=0

while True:

 try:

  response = requests.get(dow_url, headers=headers, cookies=cookies, timeout=10)

  if response.status_code == 200:

   break

  elif response.status_code == 404:

   break

  else:

   print(response.status_code)

   re_重试次数 += 1

 except Exception as e:

  adress = sys.exc_info()[-1]  # 异常地址

  line_error = traceback.extract_tb(adress, limit=1)[-1][1]  # 读取错误日志,最后一列的第二个元素即为模块出错行

  print(

   f"===================\n【异常原因】:{e}\n【异常类型】:{type(e)}\n【异常位置】:{line_error}\n===================")

  time.sleep(5)

  re_重试次数 += 1

 if re_重试次数 >= 10:

  response=""

  break

if response:

 with open(file_name, "wb+") as f:  # , errors='ignore'

  f.write(response.content)

else:

 print(f"【跳过】:下载失败{file_name}")

import winreg

def get_desktop():

key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')

return winreg.QueryValueEx(key, "Desktop")[0]

if __name__ == '__main__':

zm_path=get_desktop()

x_date = time.strftime("%Y-%m-%d")

list_file_path=list(pathlib.Path(x_date).rglob("*"))

dict_file_path={i.name:True for i in list_file_path}

 

url = "https://www.baogaoting.com/space/30909237"

for page in  range(1,3):

 params = {

  "page": page,

  "size": "15"

 }

 response = requests.get(url, headers=headers, cookies=cookies, params=params)

 """

   此处略去多行代码

   """

    print(f"【{title}】:热度{h3} 是当天上传的资料,准备访问下载{href_download}")

    if href_download:

     if not os.path.exists(f"{zm_path}//今日研报"):

      os.makedirs(f"{zm_path}//今日研报",exist_ok=True)

     title=title+ pathlib.Path(href_download).suffix

     #print(href_download, h3,title)

     for k in ["<", ">", "|", '"', "*", '\\', ":", "/", "?", "\n", "\r", "\t", "!", "☆"]:

      date = date.replace(k, '').strip()

     if dict_file_path.get(f"{date}_"+title):

      print(f"【状态】:已经下载了哦,自动跳过")

      continue

     else:

      _down_file(href_download, f"{zm_path}//今日研报//{title}")

    else:

     print(f"【状态】:链接{href_download} {title}无效,跳过不下载")

   

   else:

    print(f"【状态】:不是免费的,不下载")

   time.sleep(0.5)

  else:

   print(f"【状态】:{date} 上传时间不符合,直接结束!")

   break

input(f"【状态】:完成了哦,按任意键退出软件")

```

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

![image.png](https://upload-images.jianshu.io/upload_images/26239789-d38b1221ede7c2c2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

### 三、总结

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

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

![image.png](https://upload-images.jianshu.io/upload_images/26239789-b14f640b129460fb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

相关文章
|
25天前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
11天前
|
数据采集 存储 监控
21个Python脚本自动执行日常任务(2)
21个Python脚本自动执行日常任务(2)
51 7
21个Python脚本自动执行日常任务(2)
|
18天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
24 7
|
1天前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
16 5
|
23天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
28天前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
|
1月前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
64 2
|
1月前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
81 3
|
1月前
|
缓存 运维 NoSQL
python常见运维脚本_Python运维常用脚本
python常见运维脚本_Python运维常用脚本
31 3
|
1月前
|
数据采集 JSON 数据安全/隐私保护
Python常用脚本集锦
Python常用脚本集锦
29 2