Python 正则表达 re.findall 选取无class得段落 选不出来 求大神帮忙

三木主公 2016-04-19 03:33:44
求大神帮帮忙!
我现在想爬取某财经网站的内容(http://www.yuncaijing.com/concept),碰到了这样的一个段落。

这个段落,我试了半天都取不到。
我用的是 re包
用 re.findall('<p>(.*?)</p>', html),其中html是我趴下来的内容。
谢谢~
...全文
252 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
TaiJi1985 2016-04-24
  • 打赏
  • 举报
回复
我现在爬取网页,一般都用pyquery。如果你知道jquery,就知道这东西有多强大了。。。 它自带的强大选择器可以很快定位到你要爬取的内容。。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from pyquery import PyQuery as pq
import urllib
u = 'http://www.7dsw.com/toplastupdate/1.html'
p = urllib.urlopen(u)
pp = p.read().decode('gbk')
d = pq(pp)
sep = d('#newscontent ul a').text()
for s in sep.split(' '):
    print s 


上面代码中的 '#newscontent ul a 语法和css或者jquery是一致的。。。。。
竹聿Simon 2016-04-20
  • 打赏
  • 举报
回复
我一般都是用: pattern = re.compile('<p>(.*?)</p>', re.S) re.findall(pattern,html) 因为在正则表达式里面,点号(.)是匹配换行符以外的任意字符,用re.S处理后则可以匹配所有了。
三木主公 2016-04-19
  • 打赏
  • 举报
回复
还是不行 选不出来,我猜可能是跟前面那些好多空格有关系。。。
xSeeker~ 2016-04-19
  • 打赏
  • 举报
回复
试下 re.findall(u'<p>(.*?)</p>', html),可以吗 正则匹配的内容含有中文,要加前缀u
屎克螂 2016-04-19
  • 打赏
  • 举报
回复
re.findall('<p>(.|\s)*?</p>', html)

37,721

社区成员

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

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