1
timonwong 2013-07-27 11:23:16 +08:00
re.MULTILINE
|
2
timonwong 2013-07-27 11:23:55 +08:00
手滑,应该是 re.DOTALL
|
3
lyjyiran 2013-07-27 11:25:58 +08:00
下面findall没re.S这个参数
re.compile那行re.I改成re.I | re.S 对html操作, 建议别用正则,用bs4、lxml、pyquery这些比较好 |
4
suchj 2013-07-27 12:22:03 +08:00
你的内容是换行的吧,试试换行模式吧,python2.7.5下测试可行
http://gist.github.com/miraclesu/6093693 |
5
sujin190 2013-07-27 12:34:09 +08:00
未启用多行模式
|
6
zippera OP |
9
ccdjh 2013-07-27 21:16:06 +08:00
去一下空格和换行
内容.replace(' ','') 内容.replace('\n','') 内容.replace('\r','') |
10
zippera OP @pandada8
@ccdjh 好像就是符号的问题。还是不行,请帮忙看看,贴代码:(BTW,除了replace有更好的办法吗) <script src="https://gist.github.com/zippera/6094881.js"></script> |
11
zippera OP <script src="http://gist.github.com/zippera/6094881.js"></script>
|
12
timonwong 2013-07-27 21:45:12 +08:00
|
13
pandada8 2013-07-27 21:50:53 +08:00
writelines(lines):
Write a list of lines to the stream. #所以要用writelines的话应该要传入一个列表或元组 这里应该可以直接write(item+"\n") 处理网页最好还是用 BeautiulSoup 最好把文件打开关闭的操作放到For循环外面 或者你可以mat中所有的数据处理后在使用 writelines 一次写入 注意writelines 写入时不会帮你加回车 if len(mat)似乎可以去掉 python的for语句也是有 else 语句块的 当mat为空时,执行else语句块 |
14
clowwindy 2013-07-27 21:53:54 +08:00
HTML 不是正则语言,不要用正则表达式处理。
|
15
pandada8 2013-07-27 21:59:37 +08:00
写入时在我这里报了一个
UnicodeEncodeError: 'ascii' codec can't encode characters in position 2-16: ordinal not in range(128) 大约你可以看看 http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html //快用Python3啊,Utf-8解脱一切啊 |
16
zippera OP |
17
ccdjh 2013-07-27 23:20:29 +08:00
提取content里面的内容,对吧?直接shell哈,我就不整理了
import re import urllib url = "http://www.qiushibaike.com/month/page/" r = urllib.urlopen(url).read() html = r strlist = html.split("""<div class="block untagged mb15 bs2" id=""") len(strlist) d = strlist[2] tmp = d.replace(' ','') tmp2 = tmp.replace('\n','') tmp3 = tmp2.replace('\r','') f = re.findall('''<divclass="content"title=(.*?)</div>''',tmp3) |
19
iveney 2013-07-28 05:22:53 +08:00
用 regex parse html 自重。
请参考 SO 上的这个帖子: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags |