python爬虫urllib(2) —带有请求参数的爬虫

一、url中请求参数的处理

如果请求中有参数时,我们需要把key-value转换为字符串

#url
url="http://www.baidu.com/s?"

#请求参数
params={"wd":"pyhon爬虫"}
#将请求参数转换成url编码格式(字符串)
paramsStr=urllib.parse.urlencode(params)

url=url+paramsStr

二、实例—带有请求参数的爬虫

1.步骤

1、请求url(参数格式转换)
2、opener(代理ip)
3、创建请求对象(不同浏览器)
4、发送请求
5、正则清洗数据

2.脚本

import random
import re
import urllib
from urllib import request

#url
url="http://www.baidu.com/s?"

#请求参数
params={"wd":"pyhon爬虫"}
#将请求参数转换成url编码格式(字符串)
paramsStr=urllib.parse.urlencode(params)
url=url+paramsStr

#代理ip
proxylist=[{"http":"120.194.18.90:81"},{"http":"39.137.168.229:80"}]
proxy=random.choice(proxylist)
print(proxy)

#在headers设置不同User-Agent,模拟不同浏览器
agent1="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
agent2="Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19"
agent3="Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0 "
agent4="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2"
agent5="Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"
agentlist=[agent1,agent2,agent3,agent4,agent5]
agent=random.choice(agentlist)
print(agent)
headers={"User-Agent":agent}

#创建处理器,用来创建opener
proxyHandler=request.ProxyHandler(proxy)

#创建opener
opener=request.build_opener(proxyHandler)

#创建请求对象
req=request.Request(url,headers=headers)

#发送请求,返回响应
response=opener.open(req).read().decode()

#用正则清洗数据
pat=r'<title>(.*?)</title>'
data=re.findall(pat,response)

#输出结果
print(data[0])

3.运行结果

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章