- 论坛徽章:
- 0
|
各位chinaunix的朋友们,大家好。今天继续寻求您们的帮助。
今天试着用python写了个获取百度贴吧帖子第一页内容的小玩意,但是,很奇怪,在用正则取得楼主名字之后,却无法再使用楼主的名字继续获得楼主发表的内容;而通过手工指定却可以。具体代码如下:- #!/usr/bin/python
- #coding:utf-8
- import re,urllib2,sys
- def html_to_text(html):
- html = re.sub(r'<p>(.*?)</p>', r'\1\n', html)
- html = re.sub(r'<br>', r'\n', html)
- html = re.sub(r'\n\n', r'\n', html)
- html = re.sub(r'<[^<>]*>', '', html)
- html = html.replace('\r', '')
- return html.strip()
- url = 'http://tieba.baidu.com/p/1294878714'
- a = urllib2.urlopen(url).read()
- #开始创建文件
- fp = open('tstsss.txt','w')
- #开始找楼主
- findlouzhu = re.findall(r'author:.*',a,re.M)
- louzhu = ''
- for louzhu in findlouzhu:
- louzhu = re.sub(r'author:"', r'', louzhu )
- louzhu = re.sub(r'",',r'',louzhu )
- #看看楼主是谁
- print louzhu
- #此处很奇怪,从正则表达式匹配出来的楼主,和下面赋值的时一样的,但是,
- #下面如果使用正则表达式匹配取得的变量的话,却无法取得内容并生成内容。
- #而使用手动赋值的话,确可以获取到楼主的发布的内容。这是什么原因?
- #louzhu = 'pbs6666'
- content = re.findall(r'<li class="d_name">.*?</cc>',a,re.M|re.S)
- for i in content:
- if re.search(louzhu,i):
- abc = re.findall(r'<cc>.*?</cc>',i,re.M|re.S)
- for j in abc:
- fp.write(html_to_text(j)+'\n')
- fp.close()
复制代码 |
|