|
lhj2100Jan 11, 2012
1
不明白楼主的需求 用空格替换<p></p>不就可以了么..
|
|
2
那正则表达式怎么写呢?
|
|
qlqshJan 11, 2012
4
记不清了,好久没碰正则了,你找篇文章看下吧,特简单。10分钟基本就解决了。
|
|
gfreezyJan 11, 2012
5
不明白需求 +1
如果只是把所有的 <p></p>直接的内容匹配出来 regrex = r'<p>(.*?)</p>' paragraphs = re.findall(regrex, html_content) 应该可以,没测试。 |
|
gfreezyJan 11, 2012
7
|
|
chuck911Jan 11, 2012
9
pyquery/phpquery
类jquery语法 我抓取都用这种,懒得写正则 |
|
gfreezyJan 11, 2012
10
@fature beautifulsoup,xpath+lxml效率不低啊,况且一个页面,再大也没多少数据啊。
phantomjs是直接用Qt的webkit内核,跟浏览器差不多,不会效率很差啊。 |
|
evlosJan 11, 2012
11
preg_match_all('/<p>(.*?)<\/p>/i',$data,$result); //PHP的,楼上已经有Python的了
|
|
lyxintJan 11, 2012
13
python的要加re.DOTALL这个flag, 不然会漏结果
|
|
lyxintJan 11, 2012
14
用张教主的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) |
|
lyxintJan 11, 2012
15
<script src="https://gist.github.com/1595083.js"> </script>
|
|
lyxintJan 11, 2012
16
|
|
lyxintJan 11, 2012
17
|
|
flyingkidJan 11, 2012
19
|
|
21
谢谢ls >_<
|
|
ywjnoJan 11, 2012
22
正则<p>(.*?)</p>的效率不低的
|
|
lyxintJan 12, 2012
24
@fature 字符串下标操作比re要慢??? 不可能的.
让数据说话. http://gist.github.com/1595083.js?file=test.py http://gist.github.com/1595083.js?file=result |
|
lyxintJan 12, 2012
25
index.html是wget http://news.sina.com.cn/ 存到本地的
|
|
kojpJan 12, 2012
26
手机党伤不起 ........
Php.的话 ,我经常加个 ius之类的多试几次 就能搞定 Python的话 ,结合 beautiful soupv用 还不错 .... |