【Python学习笔记】利用Python爬取百度搜索结果

首先是需要的库:

urllib,urllib2 ----- 构建访问请求

sys ----- Python标准库

beautifulsoup ----- 解析抓取结果

一、构建访问请求

Python中urllib.urlencode可以把key-value这样的键值对转换成a=1&b=2这样的格式,如:

from urllib import urlencode
data = {'ie':'utf-8', 'word':'test'}
print data
print urlencode(data)

百度搜索的关键字为中文时,传递中文参数给URL需要经过转码,urlencode可以对中文进行转码

urllib库中quote()同样可以实现对中文进行转码

sys.stdin.encoding可以查询当前环境编码形式(PS:‘cp936’其实就是GBK)

最后我们可以写出搜索页面的URL,并利用urllib2.urlopen(url).read()来获取网页内容。

import sys
import urllib
import urllib2
question_word = "程序员"
data = {'wd':question_word ,'ie':'utf-8'}
data = urllib.urlencode(data)
url ="http://www.baidu.com/s?wd=" +'?'+data
htmlpage = urllib2.urlopen(url)
二、获取搜索结果链接

outfile = open('csv_test.txt', 'ab+')
str = html.read()
str = BeautifulSoup(str)
div = str('div')
for members in div:
       
    if members.get('class'):
        if "result" in members.get('class'):
            pages = members('a')
            for page in pages:
                herf = page.get('href', None)
                if herf != None:
                    temp = requests.get(herf.rstrip())
                    print temp.url
                    outfile.write(temp.url)
                    outfile.write('\n')
                    


查看百度网页源代码,可以看到我们要的信息在
...
中,因此只要找到源码中含有这部分的信息即可,最后将爬取到的网页链接保存到TXT文件中。




你可能感兴趣的:(Python)