在访问网站时,向服务器发送请求主要有两种方式

GET方法 请求指定的页面信息,并且返回实体主体。

POST方法 向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中,POST请求可能会导致新的资源建立和/或已有资源的修改。

 

网页抓取-----就是将URL中指定的网络资源从网络流中读取出来并且保存到本地。在phyton中有很多库可以用来抓取网页,这里我先学习的是urllib2

urllib2 --- urlopen(url,date,timeout) 方法

直接发送一个请求到指定的url地址

在这个方法中区分访问网页时是GET方法,还是POST方法就是看data值,有date参数就是POST,否则就是GET。

timeout 就是向指定url地址发送请求时,如果在timeout规定的时间内,服务器没有访问,网页就报错,说服务器无响应。

 

response = urlopen("https://www.baidu.com/")

向百度网址发送请求,并且返回服务器相应的类文件对象

换言之,response是类文件对象。

这个类文件对象是支持phyton文件对象的操作方法的,比如read,write等。//read读取文件中的全部内容并且返回字符串。

 

 

 

获取网页源代码实例://phyton3格式

import urllib.request

response = urllib.request.urlopen("http://www.baidu.com/")

html = response.read()

print(html)

 

但是这个类库有一个缺点,就是其默认的User-Agent是Phyton-urllib/版本号,这会让服务器运维人员秒看到你是爬虫。

作为一个爬虫,我们一定要重新构建我们的User-Agent

最关键的是urllib不支持构造 http 请求

 

我们使用urllib.request方法重新构建一个请求对象

 

import urllib.request

request1=urllib.request.Request('http://www.baidu.com/')
request1.add_header('user-agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36')
response=urllib.request.urlopen(request1)

html = response.read()
mystr2=html.decode("utf-8")
print(mystr2)

 这样页面拿到这个请求之后就会认为我们是一个浏览器。哈哈