from urllib import request
url='https://www.baidu.com/'
res=request.urlopen(url=url)
print(res)
打印出来的res只是是一个简单的response,没有实质性的内容.
如果想要看到响应对象,采取read的方法
from urllib import request
url='https://www.baidu.com/'
res=request.urlopen(url=url)
# print(res)
html=res.read()
print(html)
这个地方显示的b,意思是二进制字节
响应对象方法1:
read()------> 指向的是字节
我们可以采取decode方法,把字节转换为清晰可见的字符串
from urllib import request
url='https://www.baidu.com/'
res=request.urlopen(url=url)
# print(res)
html=res.read().decode()
print(html)
响应方法2:
geturl() 返回实际数据的url地址,有的网站有重定向,比如我们访问的是A地址,但是重定向到了B地址,如果我们需要得到这个重定向的地址,就用geturl
from urllib import request
url='https://www.baidu.com/'
res=request.urlopen(url=url)
# print(res)
# html=res.read().decode()
# print(html)
url=res.geturl()
print(url)
响应对象方法3:
getcode()------->返回http的响应码
200 响应成功;302代表重定向;4xx代表服务器页面出错;5xx代表服务器出错;
------------------------------------------------------------------------------------------------------
我们在用python发起请求的时候,如何不被网站认为是机器人在执行操作呢?
其中一个很重要的参数url-Agent ,主要看他携带了什么关键字
我们用一个测试网址 httpbin.org
很明显,URL-Agent:后面携带的是Python-urllib/3.10.这摆明了告诉网站,我是通过python机器人访问的
from urllib import request
url='http://httpbin.org/get'
res=request.urlopen(url)
html=res.read().decode()
print(html)
正常我们用电脑打开某一个网址的时候是这样显示的
为了解决这个问题,我们采用urllib.request.Request方法,注意最后一个request是大写;
使用流程---->>创建请求对象-包装请求-重构user-agent;
常用的参数主要是:url和user-agent
URL:请求的url地址
headers:添加请求头,类型为字典headers={User-Agent}
爬虫和反爬虫的第一步,发送请求携带包装后的请求头
1:构造请求对象:req=request.Request(url=url,headers=headers)
2:获取相应对象:res=request.ulopen(req)
3:获取响应内容:html=res.read().decode()
注意:headers里面的User-Agent 和后面跟的一串字符串,是一对键值对,分别带上各自的单引号.
from urllib import request
url='http://httpbin.org/get'
headers={'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'}
req=request.Request(url=url,headers=headers)
res=request.urlopen(req)
html=res.read().decode()
print(html)