python抓取百度结果的正则式应该怎么写

cassia_ 发布于 2015/06/02 11:27
阅读 346
收藏 0

比如我搜cassia,搜到的结果如图

在程序中,我是这样写的

import urllib2
import re
import HTMLParser
import os

url=r'http://www.baidu.com/s?ie=UTF-8&wd=cassia'
content=urllib2.urlopen(url).read()

regex = r'<div class="result(.*?)</div>'
result = re.findall(regex,content)
print result
with open('/python/123.txt','w') as f:
	for ele in result:
		f.write(ele+"\n")



抓到的结果总是空,这是怎么回事。正则式应该怎么写?

加载中
0
Feng_Yu
Feng_Yu
因为你没看页面源码,看了你就懂了
0
freesnow
freesnow

因为默认.不能匹配换行符,而你要匹配的内容里有换行符,所以不能匹配。

可以用r'<div class="result([\s\S]*?)</div>',但是不保证这是你想得到的东西。建议你先使用正则测试工具测试你的正则,然后再在代码中使用。

你也可以不用正则,使用html解析库,比如beautifulsoup

freesnow
freesnow
回复 @Feng_Yu : 额,那是在哪里。。
Feng_Yu
Feng_Yu
问题不在这里
0
万里谁能驯
万里谁能驯
查看页面源代码
0
filecache
filecache

建议使用这个地址,  http://www.baidu.com/s?wd=123456&&tn=baidulocal

百度标准的搜索结果页面 格式并不固定, 而且很多字段是json串放在里面. 过滤取结果不方便.

返回顶部
顶部