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

分类:编程技术 时间:2024-02-20 19:24 浏览:0 评论:0
0

文章用Python脚本自动采集金融网站当天发布的免费报告,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

大家好,我是皮皮。

一、前言

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

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

二、实现过程

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

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

# -*- coding:utf-8 -*-"""开发环境:Python 3.86脚本名称:2023-07-07 报告厅baogaoting创建日期:2023年07月07日"""import datetimeimport os, sys, time, tracebackimport pathlibfrom parsel import Selectorimport requestsheaders = { "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 winregdef 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 = "://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"【状态】:完成了哦,按任意键退出软件")

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

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

三、

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

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



1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 使用Python脚本自动采集网站当天发布的免费报告

用户评论