吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1240|回复: 14
收起左侧

[已解决] python抓取早报的优化

[复制链接]
kover 发表于 2022-12-19 10:16
本帖最后由 kover 于 2022-12-19 13:37 编辑

看到破友搞的新闻推送,心里也是痒痒的
看到这个帖子抓取的163早报 https://www.52pojie.cn/thread-1659205-1-1.html
我也用了一阵子,发现了一些问题
就是这个地址发的新闻比较晚,有时当天的还没发布,但是定时抓取的时间又到了,就会抓取昨天的来发了
现在我改进了一下,思路如下
先获取当天的日期跟文章标题的日期对比,如果一致再推送,不一致就每隔5分钟抓一次,半小时内如果一致就推送,否则就退出
但是实际上运行后并没有改进成功,非当天的是不推送了,但后面半小时也没见再推。看今天日志确实最后一次抓到的当天的日期
大家帮忙看下问题在哪里?应该是if。。。while。。那段没写好
代码如下:
if __name__ == '__main__':
  url = "https://www.163.com/dy/media/T1603594732083.html"
  heders = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'}
  rsp = requests.get(url, headers=heders)
  hot = rsp.content.decode('utf-8')
  jt = datetime.datetime.now().strftime('%m月%d')
  rq = re.findall('(?<=知晓天下事 ).*(?=日">)',hot)[0].split('日')
  num = 0
  if rq[0] != jt :
     while num<5 :
     #print(num,rq[0])
     time.sleep(360)
     num +=1
     url = "https://www.163.com/dy/media/T1603594732083.html"
     heders = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'}
     rsp = requests.get(url, headers=heders)
     hot = rsp.content.decode('utf-8')
     rq = re.findall('(?<=知晓天下事 ).*(?=日">)',hot)[0].split('日')
  else :
     today_url = re.findall('https://www.163.com/dy/article/.*\.html', hot)[0]
     #print(today_url)
     rsp = requests.get(today_url, headers=heders)
     hot = rsp.content.decode('utf8')
     news_list = re.findall('(?<=知晓天下事!<br/>).*(?=<br/></p><p class="f_center")',hot)[0].split('<br/>')
     msg = '\n'.join(news_list)
     wx = WeChat_SMS()
     if len(news) > 737 :
       news1 = news[0:737]
       news2 = news[737:]
       print(wx.send_data(news1))
       print(wx.send_data(news2))
    else:
       print(wx.send_data(news))


文化低取的标题让大家见怪了,大家笑笑就好别往心上去

感谢夸克逃逸热心帮助

免费评分

参与人数 1吾爱币 +1 收起 理由
Su、 + 1 不耻下问:向比自己地位低、知识少的人请教,不觉得耻辱

查看全部评分

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

weiekko 发表于 2022-12-19 10:38
不耻下问?
夸克逃逸 发表于 2022-12-19 10:38
我不太了解python,但是你的代码逻辑是不是有问题?一是你间隔的时间似乎是6分钟而不是5分钟,二是你的while循环里面一直只做了一件事就是发送请求,然后什么也没干。所以你的问题主要在于:要把while循环写在外面,每一次循环都要做判断。而你现在的代码是判断在外面,循环在里面,那么你的判断只会做一次。我不知道是不是这个问题。而且你的while代码缩进那里好像不太对,不知道是不是52的问题。我只学过一点python,你看看是不是这个问题
vethenc 发表于 2022-12-19 10:43
 楼主| kover 发表于 2022-12-19 10:46
夸克逃逸 发表于 2022-12-19 10:38
我不太了解python,但是你的代码逻辑是不是有问题?一是你间隔的时间似乎是6分钟而不是5分钟,二是你的whil ...

口误了,本来是半个小时分6次每次隔5分钟
写成分5次隔6分钟了,这个不影响结果,暂忽略吧
那个循环逻辑好像有问题,循环出结果但不会执行后面的语句
我也是python刚入门,都是依葫芦画瓢的
夸克逃逸 发表于 2022-12-19 10:47
本帖最后由 夸克逃逸 于 2022-12-19 10:51 编辑

[Python] 纯文本查看 复制代码
if __name__ == '__main__':
url = "https://www.163.com/dy/media/T1603594732083.html"
heders = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'}
jt = datetime.datetime.now().strftime('%m月%d')
num = 0

while num<5:
  rsp = requests.get(url, headers=heders)
  hot = rsp.content.decode('utf-8')
  rq = re.findall('(?<=知晓天下事 ).*(?=日">)',hot)[0].split('日')
  if rq[0] != jt:
    num += 1
    time.sleep(360)
  else:
    news_list = re.findall('(?<=知晓天下事!<br/>).*(?=<br/></p><p class="f_center")',hot)[0].split('<br/>')
    msg = '\n'.join(news_list)
    wx = WeChat_SMS()
    if len(news) > 737 :
      news1 = news[0:737]
      news2 = news[737:]
      print(wx.send_data(news1))
      print(wx.send_data(news2))
    else:
      print(wx.send_data(news))
    break;


这个是我写的,没测试,好久没敲python了,你看看有没有问题
塞北的雪 发表于 2022-12-19 10:48
不耻下问原意是不把向学问、地位等不如自己的人请教当成可耻的事。


日期判断应该写在while内!
夸克逃逸 发表于 2022-12-19 10:50

md!原来他用的《不耻下问》啊!
 楼主| kover 发表于 2022-12-19 10:51
夸克逃逸 发表于 2022-12-19 10:47
[mw_shl_code=python,true]if __name__ == '__main__':
url = "https://www.163.com/dy/media/T1603594732 ...

感谢热情回复!
我测试一下看结果对不
夸克逃逸 发表于 2022-12-19 10:54
kover 发表于 2022-12-19 10:51
感谢热情回复!
我测试一下看结果对不

测试的时候用1分钟间隔,测试2-3分钟就行了。别傻傻的去测试半个小时。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 04:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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