- 论坛徽章:
- 0
|
本帖最后由 Tinylamb 于 2012-03-17 00:50 编辑
出于工作的需要,需要从百度的搜索结果页抓取大量内容。
想到python做这种机械工作很方便,就写了一段代码
- def search(key):
- import urllib2
- from BeautifulSoup import BeautifulSoup
- #observe the pattern of search url
- search_url='http://www.baidu.com/s?wd=key&rsv_bp=0&rsv_spt=3&rsv_n=2&inputT=6391'
- # search your keyword
- req=urllib2.urlopen(search_url.replace('key',key))
- result=[] #store result
- for count in range(10):#search for 10 pages
- html=req.read()
- soup=BeautifulSoup(html)
- result+=[i.string for i in soup('a',{'onmousedown':True})]
- next_page='http:www.baidu.com/'+soup('a',{'href':True,'class':'n'})[0]['href'] # search for the next page
- req=urllib2.urlopen(next_page)
- f=open(r'result.txt','w')
- for i in result:
- f.write(i+'\n')
- f.close()
- if __name__=='__main__':
- key=raw_input('input key word:')
- search(key)
复制代码 但是运行的时候,报错一个问题。提示no host given.- req=urllib2.urlopen(next_page)
复制代码 我的问题是:打开的是标准的url,怎么会提示缺少host?
另外,我补充代码
- header='www.baidu.com'
- req=urllib2.urlopen(next_page,header)
复制代码 仍然行不通。
请大家说说解决方案。 |
|