吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6692|回复: 126
收起左侧

[Python 原创] 爬虫之你需要知道的隔夜全球要闻并发送至微信

    [复制链接]
txq0211 发表于 2023-3-14 21:08
本帖最后由 txq0211 于 2023-3-15 11:14 编辑

业余爱好者,好久没写爬虫了,近期世界经济变化莫测,
突然看到一篇“你需要知道的隔夜全球要闻”,忍不住写个爬虫把它爬下来每天看看。
WX20230314-205640.png

第一步 找到通用接口

WX20230314-205134.png
WX20230314-205150.png
WX20230314-205208.png

第二步 测试接口

WX20230314-205327.png

第三步 尝试编写代码,反复测试
[Python] 纯文本查看 复制代码
import requests
import json
import re
import time
from lxml import etree

if __name__ == '__main__':
    url = 'https://www.cls.cn/api/sw?app=CailianpressWeb&os=web&sv=7.7.5&sign=bf0f367462d8cd70917ba5eab3853bce'
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0"}
    data = {"type":"telegram","keyword":"你需要知道的隔夜全球要闻","page":0,"rn":20,"os":"web","sv":"7.7.5","app":"CailianpressWeb"}
    response = requests.post(url=url,headers=headers,data=data)
    news = json.loads(response.text)['data']['telegram']['data'][0]['descr']
    timeStamp = json.loads(response.text)['data']['telegram']['data'][0]['time']
    timeArray = time.localtime(timeStamp)
    formatTime = time.strftime("%Y年%m月%d日", timeArray)
    news = re.split(r'\d+、',news)
    title = ''.join(etree.HTML(news[0]).xpath('//text()'))[1:-2]
    print(formatTime,title)
    for i in range(1, len(news)):
        new = '%s、%s'%(i,news[i])
        print(new)

WX20230314-204801.png

第四步 迭代完善(2023.3.14修改)
最初编写代码过程中存在问题,本想通过正则表达式在"。数字、"数字前面通过正则替换内容替换新增换行,没想到输出的时候数字被\d+替换了。感谢大神@Arcticlyc指点,优化正则替换。
如有不足,欢迎大家提出意见
[Python] 纯文本查看 复制代码
import requests
import json
import re
import time
from lxml import etree

if __name__ == '__main__':
    url = 'https://www.cls.cn/api/sw?app=CailianpressWeb&os=web&sv=7.7.5&sign=bf0f367462d8cd70917ba5eab3853bce'
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0"}
    data = {"type":"telegram","keyword":"你需要知道的隔夜全球要闻","page":0,"rn":20,"os":"web","sv":"7.7.5","app":"CailianpressWeb"}
    response = requests.post(url=url,headers=headers,data=data)
    news = json.loads(response.text)['data']['telegram']['data'][0]['descr']
    timeStamp = json.loads(response.text)['data']['telegram']['data'][0]['time']
    timeArray = time.localtime(timeStamp)
    formatTime = time.strftime("%Y年%m月%d日", timeArray)
    news = re.sub(r'(\d+、)', r'\n\1', news)
    formatNews = ''.join(etree.HTML(news).xpath('//text()'))
    print(formatTime,formatNews)

WX20230314-230214.png

第五步 发送至微信(2023.3.15修改)
发现一款新的微信插件wxauto支持最新的微信3.9+。
地址https://github.com/cluic/wxauto
[Python] 纯文本查看 复制代码
import requests
import json
import re
import time
from lxml import etree
from wxauto import *

if __name__ == '__main__':
    url = 'https://www.cls.cn/api/sw?app=CailianpressWeb&os=web&sv=7.7.5&sign=bf0f367462d8cd70917ba5eab3853bce'
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0"}
    data = {"type": "telegram", "keyword": "你需要知道的隔夜全球要闻", "page": 0, "rn": 20, "os": "web", "sv": "7.7.5",
            "app": "CailianpressWeb"}
    response = requests.post(url=url, headers=headers, data=data)
    news = json.loads(response.text)['data']['telegram']['data'][0]['descr']
    timeStamp = json.loads(response.text)['data']['telegram']['data'][0]['time']
    timeArray = time.localtime(timeStamp)
    formatTime = time.strftime("%Y年%m月%d日", timeArray)
    news = re.sub(r'(\d+、)', r'\n\1', news)
    formatNews = ''.join(etree.HTML(news).xpath('//text()'))
    # 获取当前微信客户端
    wx = WeChat()
    # 获取会话列表
    wx.GetSessionList()
    # 向某人发送消息(以`文件传输助手`为例)
    msg = formatTime + '\n' + formatNews
    who = '文件传输助手'
    WxUtils.SetClipboard(msg)  # 将内容复制到剪贴板,类似于Ctrl + C
    wx.ChatWith(who)  # 打开`文件传输助手`聊天窗口
    wx.SendClipboard()  # 发送剪贴板的内容,类似于Ctrl + V

微信截图_20230315110334.png

免费评分

参与人数 20吾爱币 +24 热心值 +17 收起 理由
aa20221101 + 1 + 1 热心回复!
潇洒超人 + 2 建议使用第三方推送服务配合腾讯云函数
sanck11 + 1 + 1 热心回复!
wangeround + 1 谢谢@Thanks!
wushaominkk + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
BlueTheEf + 1 + 1 谢谢@Thanks!
Lc19921018 + 1 我很赞同!
arsleeli + 1 + 1 我很赞同!
paguco + 1 + 1 谢谢@Thanks!
Jaquior + 1 + 1 谢谢@Thanks!
wmf1184 + 1 + 1 我很赞同!
qingbaicong6 + 1 + 1 热心回复!
123KKK + 1 + 1 感谢分享
xyer8 + 1 谢谢@Thanks!
gnaw + 1 + 1 用心讨论,共获提升!
cv518 + 1 + 1 用心讨论,共获提升!
iossuu + 1 支持一下
fafashiwo + 1 我很赞同!学习学习
anzidada + 1 + 1 用心讨论,共获提升!
XY520ZXT + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Arcticlyc 发表于 2023-3-14 22:31
[Python] 纯文本查看 复制代码
re.sub(r'(\d+、)', r'\n\1', news)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
txq0211 + 1 + 1 热心回复!

查看全部评分

二十瞬 发表于 2023-3-15 17:36
建议楼主直接用push_plus(https://www.pushplus.plus/) 直接通过post发送到自己微信. 然后把这个脚本挂在服务器上每天定时运行就行了  大概像这样  token 需要你替换成自己的
[Python] 纯文本查看 复制代码
if __name__ == '__main__':
    url = 'https://www.cls.cn/api/sw?app=CailianpressWeb&os=web&sv=7.7.5&sign=bf0f367462d8cd70917ba5eab3853bce'
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0"}
    data = {"type": "telegram", "keyword": "你需要知道的隔夜全球要闻", "page": 0, "rn": 20, "os": "web", "sv": "7.7.5",
            "app": "CailianpressWeb"}
    response = requests.post(url=url, headers=headers, data=data)
    news = json.loads(response.text)['data']['telegram']['data'][0]['descr']
    timeStamp = json.loads(response.text)['data']['telegram']['data'][0]['time']
    timeArray = time.localtime(timeStamp)
    formatTime = time.strftime("%Y年%m月%d日", timeArray)
    news = re.split(r'\d+、', news)
    title = ''.join(etree.HTML(news[0]).xpath('//text()'))[1:-2]
    param = {"title": f"{formatTime} {title}",
             "content": f"{'<br>&#9728;'.join(news)}",
             "template": "html",
             "token": "*******************",
             }
    requests.post(url="https://www.pushplus.plus/send", headers=headers, data=param)
VanYun 发表于 2023-3-14 21:21
huangls0111 发表于 2023-3-14 21:23
感觉好难,我还有很长的路要走。
XY520ZXT 发表于 2023-3-14 21:27
感谢大佬的分享!
zcyLRF 发表于 2023-3-14 21:30
感谢大佬!
kuangxiao 发表于 2023-3-14 22:11
感谢大佬的分享!!
 楼主| txq0211 发表于 2023-3-14 22:35

这样所有的编号都变成1了
qaq66da 发表于 2023-3-14 22:35
可以可以
Arcticlyc 发表于 2023-3-14 22:40
txq0211 发表于 2023-3-14 22:35
这样所有的编号都变成1了

IMG_20230314_223925.jpg
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 07:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表