python抓联想词练习

网上看过抓取360搜索联想词的教程,在此修改了一些小东西,练习下抓百度关键字联想词,代码很简单,主要是思路!

大概思路:    

                    1. http抓包分析,工具很多,这边用chrome 自带工具抓取

                    2. 构造http请求(添加代理,可选)

                    3. 对结果进行正则匹配,输出


1. 先说下抓包,打开www.baidu.com,右键--.>审查元素,chrome 下栏会多个拦截窗口,如下:



2. 查看Network 下的 Headers 和 Response



我们只需要把红框中的内容构造出来,并提交服务器就可以获取到关键字列表


关键字列表

3. 正则匹配,这个比较简单吧

代码实现:

#!/usr/bin/python
#coding:utf-8

import urllib2  #Request 构造请求,官网文档 http://docs.python.org/library/urllib2
import urllib   #用于中文编码
import re       #正则模块
import sys      #系统模块
from random import choice  #随机选择

proxy_list = ['183.129.198.248:80','183.129.198.236:80','183.129.198.228:80']  #代理IP,可自行百度免费代理IP,可选
 
keyword = urllib.quote(sys.argv[1]) #对传入的参数编码,比如输入中文字符
proxy_ip = choice(proxy_list)       #随机从代理IP列表获取一个IP

headers={   #构造headers,这里用到字典
          "Host":"suggestion.baidu.com",
          "Referer":"http://www.baidu.com/",
          "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"
        }
##构造请求
url = "http://suggestion.baidu.com/su?wd=" + keyword + "&p=3"  
req = urllib2.Request(url) 
for key in headers:  
       req.add_header(key,headers[key])
##代理部分
proxy_handler = urllib2.ProxyHandler({'http': 'http://'+ proxy_ip})
opener = urllib2.build_opener(proxy_handler)
urllib2.install_opener(opener)
##发送构造请求,读取返回内容   
res = urllib2.urlopen(req).read()
match_word = re.findall("\"(.*?)\"",res)  #匹配联想词

for word in match_word:
        word = word.decode('gbk') #这里发现我的xshell采用utf-8会乱码,所以先解掉gbk编码
        print word   



实现测试:



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值