提取html中某内容,求正则

2013-09-25 23:40:32 +08:00
 jacy
html如下:

XXX
<div class="content">

XXXX

</div>
XXX

主要是提取content这个div里的内容,但是这里面的内容不固定,可能里面没有其他标签,还可能有其他的div等标签,正则怎样写呢?
php除了正则还有什么比较方便的方法处理html?
5308 次点击
所在节点    PHP
19 条回复
yangqi
2013-09-25 23:50:30 +08:00
php正则还是最方便了,这个放在前段用jquery很容易就提取了
jacy
2013-09-25 23:52:55 +08:00
@yangqi 放前端不行啊,是用php抓取的数据,还需要处理后继续用。
emric
2013-09-25 23:54:20 +08:00
Don't try to parse HTML using regex. Find an HTML parser please.
kojp
2013-09-25 23:57:51 +08:00
A class named snopy

Have a try.
yangqi
2013-09-26 00:00:33 +08:00
@jacy 如果只是简单提取内容的话regex可以,要是有各种parsing的话可以试试simplehtml库
PrideChung
2013-09-26 00:01:57 +08:00
对于HTML这么复杂的文本正则处理不来的,找个HTML parser才是正道。
pantaovay
2013-09-26 00:09:00 +08:00
正则处理不来,用DOM操作吧
jacy
2013-09-26 00:13:46 +08:00
谢谢,我试试simplehtml。
mescoda
2013-09-26 00:31:01 +08:00
PHP 用 simplehtmldom
Python 用 [pywebquery](https://github.com/NStal/pywebquery)
Node 用 [jwebquery](https://github.com/NStal/jwebquery)
ericls
2013-09-26 01:06:49 +08:00
@mescoda 谢谢 我明天看看
foru17
2013-09-26 01:19:07 +08:00
我记得正则好像是行的。你搜一下 google 搜索结果 正则,参考一下,之前弄过一个类似的。
faceair
2013-09-26 06:38:15 +08:00
<div class=\"content\">([\s\S]+?(<div[\s\S]+?<\/div>)+?[\s\S]+?)<\/div>

手机写的,你测试下,主要是确定中间的div是一对一对就可以了
liuyao729
2013-09-26 07:02:33 +08:00
试试phpQuery
faceair
2013-09-26 07:28:11 +08:00
修改了下,测试貌似通过了

<div class=\"content\">([\s\S]+?(<div[\s\S]+?<\/div>)*?[\s\S]+?)*?<\/div>
alexrezit
2013-09-26 07:39:52 +08:00
不 要 用 正 则.
找 个 parser 用 XPath 很 难 么?
cxshun
2013-09-26 08:51:24 +08:00
其实xpath不是更方便么,直接//div[class='content']/*这个就OK啦。正则解析HTML是没办法的选择。
jiych
2013-09-26 09:14:24 +08:00
可以用flex
junp
2013-09-26 09:25:32 +08:00
前端方便
marchtea
2013-09-26 13:50:20 +08:00
用simple_html_dom来读取,再处理吧.直接弄貌似不是很好弄

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

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

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

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

© 2021 V2EX