鱼C论坛

 找回密码
 立即注册
查看: 1390|回复: 12

[已解决]BS4+正则表达式提取页面信息

[复制链接]
发表于 2018-5-27 11:05:52 | 显示全部楼层 |阅读模式
10鱼币
请问我怎么才能将里面的年月日提取出来?
$XD]5W8~FX2@FC9W][DN(]L.png
$O5PEJN@`EHP{%)99}SU[B1.png
我这样写没反应
L%YZ)ERG6UK`Y3A`}JM2@TW.png
该怎样写表达式?
最佳答案
2018-5-27 11:05:53
本帖最后由 Python小当家 于 2018-5-27 11:48 编辑

#注:
#1.之所以用年月日的字符作为索引是因为更具特殊性,另外我这里不是很确定网页上的“:”是英文的还是中文的,如果有错你可以修改(我先猜测是中文的)
#2.index-15表示从刚才那个点回退足够多来寻找,“-15”既不会多查也不会少查(具体值可以随测量调整)
#3.html是指你从网页解码后直接获得的整个字符串
index=html.find('年')
year=re.search(r"\d+",html[index-15:]).group()
index=html.find('月')
month=re.search(r"\d+",html[index-15:]).group()
index=html.find('日')
day=re.search(r"\d+",html[index-15:]).group()
index=html.find(':')
hour=re.search(r"\d+",html[index-15:]).group()
minute=re.search(r"\d+",html[index:]).group()
print(year,"年",month,"月",day,"日",hour,":",minute)

最佳答案

查看完整内容

#注: #1.之所以用年月日的字符作为索引是因为更具特殊性,另外我这里不是很确定网页上的“:”是英文的还是中文的,如果有错你可以修改(我先猜测是中文的) #2.index-15表示从刚才那个点回退足够多来寻找,“-15”既不会多查也不会少查(具体值可以随测量调整) #3.html是指你从网页解码后直接获得的整个字符串 index=html.find('年') year=re.search(r"\d+",html).group() index=html.find('月') month=re.search(r"\d+",h ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-27 11:05:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Python小当家 于 2018-5-27 11:48 编辑

#注:
#1.之所以用年月日的字符作为索引是因为更具特殊性,另外我这里不是很确定网页上的“:”是英文的还是中文的,如果有错你可以修改(我先猜测是中文的)
#2.index-15表示从刚才那个点回退足够多来寻找,“-15”既不会多查也不会少查(具体值可以随测量调整)
#3.html是指你从网页解码后直接获得的整个字符串
index=html.find('年')
year=re.search(r"\d+",html[index-15:]).group()
index=html.find('月')
month=re.search(r"\d+",html[index-15:]).group()
index=html.find('日')
day=re.search(r"\d+",html[index-15:]).group()
index=html.find(':')
hour=re.search(r"\d+",html[index-15:]).group()
minute=re.search(r"\d+",html[index:]).group()
print(year,"年",month,"月",day,"日",hour,":",minute)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-27 11:49:32 | 显示全部楼层
Python小当家 发表于 2018-5-27 11:40
#注:
#1.之所以用年月日的字符作为索引是因为更具特殊性,另外我这里不是很确定网页上的“:”是英文的还 ...
  1. html = html.decode('utf-8')
  2.     index=html.find('年')
  3.     year=re.search(r"\d+",html[index-15:]).group()
  4.     index=html.find('月')
  5.     month=re.search(r"\d+",html[index-15:]).group()
  6.     index=html.find('日')
  7.     day=re.search(r"\d+",html[index-15:]).group()
  8.     print(year,"年",month,"月",day,"日")
复制代码

是这样吗?
报错:
year=re.search(r"\d+",html[index-15:]).group()
AttributeError: 'NoneType' object has no attribute 'group'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-27 11:53:06 | 显示全部楼层
网址?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-27 11:56:12 | 显示全部楼层

http://job.guet.edu.cn/Home/ArticleDetails/b26043f4-ad0a-49dc-b2e4-25fd4bc5ec41
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-27 13:00:23 | 显示全部楼层
Python小当家 发表于 2018-5-27 11:40
#注:
#1.之所以用年月日的字符作为索引是因为更具特殊性,另外我这里不是很确定网页上的“:”是英文的还 ...

虽然没有直接解决问题,但是通过也给了我启发,最终还是解决了 感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-27 13:00:29 | 显示全部楼层
  1. import urllib, re
  2. content = urllib.request.urlopen('http://job.guet.edu.cn/Home/ArticleDetails/b26043f4-ad0a-49dc-b2e4-25fd4bc5ec41').read().decode('utf-8')
  3. pat = '<span style="color:#E53333;font-family:黑体;font-size:22pt;mso-bidi-font-family:宋体;mso-font-kerning:0pt;">(\w*?:)<span lang="EN-US">(\d+)</span>(.)<span lang="EN-US">(\d)</span>(.)<span lang="EN-US">(\d)</span>(.)<span lang="EN-US">(\d)</span>(:)<span lang="EN-US">(\d+)</span></span>'
  4. rst = re.compile(pat, re.M).findall(content)
  5. print(''.join(rst[0]))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-27 13:01:33 | 显示全部楼层
我的正则学的不是太好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-27 14:40:13 | 显示全部楼层
新手·ing 发表于 2018-5-27 13:01
我的正则学的不是太好

哈 谢谢 不过已经解决啦 抱歉不能给你最佳了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-27 14:44:42 | 显示全部楼层
一鱼 发表于 2018-5-27 14:40
哈 谢谢 不过已经解决啦 抱歉不能给你最佳了

没事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-27 14:57:07 | 显示全部楼层
感谢你将我选为最佳答案,不过我还是有些困惑,为何会出错。
我随便设一字符串做了下实验,按道理应该没错才是
捕获.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-27 15:10:10 | 显示全部楼层
Python小当家 发表于 2018-5-27 14:57
感谢你将我选为最佳答案,不过我还是有些困惑,为何会出错。
我随便设一字符串做了下实验,按道理应该没错 ...

主要是我爬的页面不止一个 有些页面很坑爹的不一样 所以re的返回值为None,就没有group了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-27 15:38:04 | 显示全部楼层
一鱼 发表于 2018-5-27 15:10
主要是我爬的页面不止一个 有些页面很坑爹的不一样 所以re的返回值为None,就没有group了

原来如此
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 00:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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