要用正则表达式提取html文件所有的段落,就是<p>和</p>之间的,求解

2012-01-11 21:43:41 +08:00
 hanbaoo
7340 次点击
所在节点    程序员
28 条回复
lhj2100
2012-01-11 21:58:06 +08:00
不明白楼主的需求 用空格替换<p></p>不就可以了么..
hanbaoo
2012-01-11 22:01:12 +08:00
那正则表达式怎么写呢?
hanbaoo
2012-01-11 22:01:28 +08:00
@lhj2100 那正则表达式怎么写呢?
qlqsh
2012-01-11 22:04:55 +08:00
记不清了,好久没碰正则了,你找篇文章看下吧,特简单。10分钟基本就解决了。
gfreezy
2012-01-11 22:07:53 +08:00
不明白需求 +1
如果只是把所有的 <p></p>直接的内容匹配出来

regrex = r'<p>(.*?)</p>'
paragraphs = re.findall(regrex, html_content)

应该可以,没测试。
fature
2012-01-11 22:10:09 +08:00
@gfreezy
就是 随便一个网站 可以顺利截取 比如要 <p> </p>之间的数据
但如果 里面的东西 分段了
就截取不到
gfreezy
2012-01-11 22:16:35 +08:00
@fature beautifulsoup,xpath什么的可以处理这个。
用js来抓 http://www.phantomjs.org/
fature
2012-01-11 22:28:04 +08:00
@gfreezy 数据量大的时候效率太低了
chuck911
2012-01-11 22:39:16 +08:00
pyquery/phpquery
类jquery语法
我抓取都用这种,懒得写正则
gfreezy
2012-01-11 22:42:04 +08:00
@fature beautifulsoup,xpath+lxml效率不低啊,况且一个页面,再大也没多少数据啊。
phantomjs是直接用Qt的webkit内核,跟浏览器差不多,不会效率很差啊。
evlos
2012-01-11 22:48:51 +08:00
preg_match_all('/<p>(.*?)<\/p>/i',$data,$result); //PHP的,楼上已经有Python的了
fature
2012-01-11 22:53:42 +08:00
@gfreezy 页面有几千个>_<
lyxint
2012-01-11 23:00:11 +08:00
python的要加re.DOTALL这个flag, 不然会漏结果
lyxint
2012-01-11 23:03:03 +08:00
用张教主的txt_wrap_by_all
def txt_wrap_by(begin, end, html):
if not html:
return ''
start = html.find(begin)
if start >= 0:
start += len(begin)
end = html.find(end, start)
if end >= 0:
return html[start:end].strip()

def txt_wrap_by_all(begin, end, html):
if not html:
return ''
result = []
from_pos = 0
while True:
start = html.find(begin, from_pos)
if start >= 0:
start += len(begin)
endpos = html.find(end, start)
if endpos >= 0:
result.append(html[start:endpos].strip())
from_pos = endpos+len(end)
continue
break
return result

ps = txt_wrap_by_all('<p>', '</p>', html)
lyxint
2012-01-11 23:04:52 +08:00
<script src="https://gist.github.com/1595083.js"> </script>
lyxint
2012-01-11 23:05:14 +08:00
lyxint
2012-01-11 23:05:39 +08:00
flyingkid
2012-01-11 23:07:45 +08:00
@lyxint 把github的https去掉就可以了,带https抓不到。
flyingkid
2012-01-11 23:08:15 +08:00
gfreezy
2012-01-11 23:14:07 +08:00
@fature 不多,曾经公司要爬新浪博客,爬了个把星期。。。--
千把页面还好。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/25411

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX