鱼C论坛

 找回密码
 立即注册
查看: 657|回复: 19

[已解决]re模块

[复制链接]
发表于 2020-4-3 17:59:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题1:
引子:这个问题好像与(?:有关,我忘了,就是在爬ip地址匹配时,除了ip还有一些多余的123,1,2的这种情况,具体怎么解决,实在想不起来了
问题:爬百度疫情源代码时,用爬出地区的数据,但是除了这部分数据还有其他的
不想去百度爬取的,我把内容格式发一下:
[{"confirmed":"1","died":"","crued":"1","relativeTime":"1585756800","confirmedRelative":"0","diedRelative":"0","curedRelative":"0","curConfirm":"0","curConfirmRelative":"0","icuDisable":"1","area":"\\u897f\\u85cf","subList":[{"city":"\\u62c9\\u8428","confirmed":"1","died":"","crued":"1","confirmedRelative":"0","curConfirm":"0","cityCode":"100"}]},{"confirmed":"41","died":"","crued":"10","relativeTime":"1585670400","confirmedRelative":"0","diedRelative":"0","curedRelative":"0","curConfirm":"31","curConfirmRelative":"0","cityCode":"2911","icuDisable":"1","area":"\\u6fb3\\u95e8","subList":[]}
我的代码是:
import requests
import json
import re
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia'
html = requests.get(url,headers=headers)
content = html.text
value = r'(\{("[a-z,A-Z]+":"\d*",){10,11}"area":"(\\(\w){5})+","subList":\[\])'
c=re.compile(value,re.DOTALL)
t = c.findall(content)
print(t)
结果:
[('{"confirmed":"42","died":"","crued":"10","relativeTime":"1585756800","confirmedRelative":"0","diedRelative":"0","curedRelative":"0","curConfirm":"32","curConfirmRelative":"0","cityCode":"2911","icuDisable":"1","area":"\\u6fb3\\u95e8","subList":[]', '"icuDisable":"1",', '\\u95e8', '8'), ('{"confirmed":"348","died":"5","crued":"50","relativeTime":"1585756800","confirmedRelative":"10","diedRelative":"0","curedRelative":"5","curConfirm":"293","curConfirmRelative":"5","icuDisable":"1","area":"\\u53f0\\u6e7e","subList":[]', '"icuDisable":"1",', '\\u6e7e', 'e'), ('{"confirmed":"845","died":"4","crued":"173","relativeTime":"1585756800","confirmedRelative":"37","diedRelative":"0","curedRelative":"7","curConfirm":"668","curConfirmRelative":"30","cityCode":"2912","icuDisable":"1","area":"\\u9999\\u6e2f","subList":[]', '"icuDisable":"1",', '\\u6e2f', 'f')]
每一个都存在不需要的,当时ip怎么处理的我忘了,各位大佬帮下忙?
问题2:
"area":"\\u53f0\\u6e7e",源代码是只有\,但是读出来时候就转义了\\,这时候就读不出来地点了。
h="\\u53f0\\u6e7e"
print(h)
h="\u53f0\u6e7e"
print(h)
结果:
\u53f0\u6e7e
台湾
最佳答案
2020-4-3 21:08:06
Chysial 发表于 2020-4-3 20:29
大佬能帮下忙看下吗

一个是源码  一个是运行结果   也不知道你想要啥数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-3 18:02:56 | 显示全部楼层
@塔利班 @claws0n
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-3 18:05:30 | 显示全部楼层

我记得版规上有写
1. 提问尽量不要点将,例如: 小甲鱼来问答下...  XX 来回答下... (影响他人回帖积极性)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-3 18:09:17 | 显示全部楼层
回复你第二个问题
>>> h="\\u53f0\\u6e7e"
>>> print(h.encode(encoding="utf-8").decode(encoding="unicode_escape"))
台湾
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-3 18:25:49 | 显示全部楼层

那劳烦你帮忙解答下吧,帮我改下正则
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-3 18:26:22 | 显示全部楼层
wp231957 发表于 2020-4-3 18:09
回复你第二个问题

第一个问题能回答吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-3 18:26:54 | 显示全部楼层

好的 明白了 下不为例
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-3 18:28:44 From FishC Mobile | 显示全部楼层
Chysial 发表于 2020-4-3 18:26
第一个问题能回答吗

不知道你要提取啥
标准json的话,还是不用正则的好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-3 19:57:49 | 显示全部楼层
wp231957 发表于 2020-4-3 18:28
不知道你要提取啥
标准json的话,还是不用正则的好

百度疫情数据源代码是json格式(只查看源代码,不用F12),但是我无法使用json模块,你帮忙看看呗!爬取的是各个省的疫情数据!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-3 20:29:37 | 显示全部楼层
wp231957 发表于 2020-4-3 18:28
不知道你要提取啥
标准json的话,还是不用正则的好

大佬能帮下忙看下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-3 21:08:06 | 显示全部楼层    本楼为最佳答案   
Chysial 发表于 2020-4-3 20:29
大佬能帮下忙看下吗

一个是源码  一个是运行结果   也不知道你想要啥数据

wp.rar

23.68 KB, 下载次数: 3

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-3 21:22:42 | 显示全部楼层
wp231957 发表于 2020-4-3 21:08
一个是源码  一个是运行结果   也不知道你想要啥数据

看不懂 能不能解释下 啊 你那个s怎么出来的 我就想爬出那个s来 从百度实时疫情上爬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-3 21:26:01 From FishC Mobile | 显示全部楼层
Chysial 发表于 2020-4-3 21:22
看不懂 能不能解释下 啊 你那个s怎么出来的 我就想爬出那个s来 从百度实时疫情上爬

我是手工复制的,然后它好像不是标准json
我又手工修补,自动截取也能,今天不行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-3 21:33:34 | 显示全部楼层
wp231957 发表于 2020-4-3 21:26
我是手工复制的,然后它好像不是标准json
我又手工修补,自动截取也能,今天不行了

对的 不是标准json 所以我想用正则提取出来 但是涉及非捕获组 我提取数据能用但是不是很完美 还有一个问题你怎么复制的结构那么好的,有专门的软件还是工具
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-3 21:41:31 From FishC Mobile | 显示全部楼层
Chysial 发表于 2020-4-3 21:33
对的 不是标准json 所以我想用正则提取出来 但是涉及非捕获组 我提取数据能用但是不是很完美 还有一个问 ...

json在线格式转换  百度一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-3 21:48:57 | 显示全部楼层
wp231957 发表于 2020-4-3 21:41
json在线格式转换  百度一下

ok thks 麻烦你了 哪个小甲鱼ip哪个正则你还有印象吗,我找视频没找到,如果有印象能不能告诉我一下r'(?:(?:[0,1]?\d?\d|2[0-4]\d|25[0-5])\.){3}(?:[0,1]?\d?\d|2[0-4]\d|25[0-5])'当时加非捕获组代表的是啥意思,为啥加?我baidu没搜到答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-3 22:03:46 From FishC Mobile | 显示全部楼层
Chysial 发表于 2020-4-3 21:48
ok thks 麻烦你了 哪个小甲鱼ip哪个正则你还有印象吗,我找视频没找到,如果有印象能不能告诉我一下r'(?: ...

?:的意思是  匹配但是不包含在结果中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-3 22:14:32 | 显示全部楼层
wp231957 发表于 2020-4-3 22:03
?:的意思是  匹配但是不包含在结果中

嗯 我爬数据的时候出现了ip一样的结果出现类似[''123.12.12.12","123","1"]的ip结果,我是实在不知道如何加?:取消后边的两组了 哎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-3 22:28:45 | 显示全部楼层
wp231957 发表于 2020-4-3 22:03
?:的意思是  匹配但是不包含在结果中

爬出来了,可能是当时的{导致在非捕获组的时候出现了问题,我去掉{修改得出结果来了
value =r'(?:(?:"[a-z,A-Z]+":"\d*",){10,11}"area":"(?:\\(?:\w){5})+","subList":\[\])'
['"confirmed":"42","died":"","crued":"10","relativeTime":"1585756800","confirmedRelative":"0","diedRelative":"0","curedRelative":"0","curConfirm":"32","curConfirmRelative":"0","cityCode":"2911","icuDisable":"1","area":"\\u6fb3\\u95e8","subList":[]', '"confirmed":"348","died":"5","crued":"50","relativeTime":"1585756800","confirmedRelative":"10","diedRelative":"0","curedRelative":"5","curConfirm":"293","curConfirmRelative":"5","icuDisable":"1","area":"\\u53f0\\u6e7e","subList":[]', '"confirmed":"845","died":"4","crued":"173","relativeTime":"1585756800","confirmedRelative":"37","diedRelative":"0","curedRelative":"7","curConfirm":"668","curConfirmRelative":"30","cityCode":"2912","icuDisable":"1","area":"\\u9999\\u6e2f","subList":[]']
这样再修改一下subList就能得出省的数据来了
谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-3 22:43:44 | 显示全部楼层
Chysial 发表于 2020-4-3 22:28
爬出来了,可能是当时的{导致在非捕获组的时候出现了问题,我去掉{修改得出结果来了

['"conf ...

搞出json来了
{'confirmed': '1',
'died': '',
'crued': '1',
'relativeTime': '1585756800',
'confirmedRelative': '0',
'diedRelative': '0',
'curedRelative': '0',
'curConfirm': '0',
'curConfirmRelative': '0',
'icuDisable': '1',
'area': '西藏',
'subList': '[]'}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 23:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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