Python request请求

1.基础请求框架

from urllib import request
url=r"http://www.baidu.com"
req=request.Request(url)    #构造请求
response=request.urlopen(req).read().decode()   #获取响应
print(response)

2.自定义header

from urllib import request
import re
headers={
    "User-Agent":"Mozilla/5.0"
}
url=r"http://www.baidu.com"
req=request.Request(url,headers=headers)    #构造请求
response=request.urlopen(req).read().decode()   #获取响应
pat=r"<title>(.*?)</title>"     #正则匹配规则
data=re.findall(pat,response)   #正则匹配筛选
print(data)

3.利用随机数随机更换agent

from urllib import request
import re
import random

#将多个user-agent值放入list
agentlist=["Mozilla/5.0",
           "Mozilla/5.0",
           "Mozilla/5.0"]
#利用随机数随机取一个agent
agent=random.choice(agentlist)
print(agent)
headers={
    "User-Agent":agent
}
url=r"http://www.baidu.com"
req=request.Request(url,headers=headers)    #构造请求
response=request.urlopen(req).read().decode()   #获取响应
pat=r"<title>(.*?)</title>"     #正则匹配规则
data=re.findall(pat,response)   #正则匹配筛选
print(data)

 



 

urlopen是一个特殊的opener(模块构建的)

urlopen()方法不支持代理、cookie等其他的HTTP/HTTPS高级功能。

要支持这些功能:通过request.build_opener()方法创建自定义opener对象。

使用自定义的opener对象,调用open()方法发送请求。

如果程序里所有请求都使用自定义opener,可以使用request.install_opener()将自定义的opener对象定义为全局opener,表示如果之后凡是调用urlopen,都将使用这个opener。

from urllib import request
import re
headers={
    "User-Agent":"Mozilla/5.0"
}
url=r"http://www.baidu.com"
#构建HTTP处理器对象(专门处理HTTP请求的对象)
http_hander=request.HTTPHandler()
#创建自定义opener
opener=request.build_opener(http_hander)
#创建自定义请求对象
req=request.Request(url,headers=headers)
#发送请求,获取响应
response=opener.open(req).read().decode()
pat=r"<title>(.*?)</title>"
data=re.findall(pat,response)
print(data)
#把自定义opener设置为全局,这样用urlopen发送的请求也会使用自定义的opener
request.install_opener(opener)

#此时的urltopen也会使用自定义的opener
test=request.urlopen(req)

 

posted @ 2020-09-05 16:15  短戈行  阅读(3448)  评论(0编辑  收藏  举报