为什么正则把源代码采集下来就能匹配到但是直接用网页就不行

zhxzd1 2018-01-28 05:39:32
r=' <p class="productPrice"><em title="188.00"><b>¥</b>188.00</em></p>'
price=re.findall(r'<em.*?>(.*?)</em>',r)
print price

这样输出的时候输出的结果是
['<b>¥</b>188.00']


而上述被我复制到文本的源代码在原来的网页源代码中显示是
 <p class="productPrice">
<a class="tag"><img src="//img.alicdn.com/tfs/TB1hszmmv2H8KJjy0FcXXaDlFXa-60-60.png" title="" /></a>

<em title="188.00"><b>¥</b>188.00</em>

</p>

我的python代码是
r=requests.get(url,timeout=30)
price=re.findall(r'<em.*?>(.*?)</em>',r.text,re.S)
print price

这时候输出为空

想不明白为什么,向各位大佬求教...
第一次发帖,如有不合规范还望海涵并告知!
...全文
368 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanGuo_uu 2018-01-29
  • 打赏
  • 举报
回复
你把r.text先打印出来看看。 如果跟你直接的html不同,那就找到原因了
lzw2016 2018-01-29
  • 打赏
  • 举报
回复
不好意思没看到你在findall中写了r.text,但不是正则匹配的原因,把r.text打印出来看看吧,因为有些内容会通过异步加载,并非是在html中显示
lzw2016 2018-01-29
  • 打赏
  • 举报
回复
正则是做字符串匹配,你返回的源码要使用text属性得到字符串
「已注销」 2018-01-28
  • 打赏
  • 举报
回复

result=re.findall(r'<em .*?</b>(.*?)</em>',s,re.DOTALL)
print(result[0])

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧