赞
踩
目录
网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等,可以自动化浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则进行,这些规则称之为网络爬虫算法。使用Python可以很方便地写出爬虫程序,进行互联网信息的自动化检索
之前我也写了有关爬虫的博客,可以参考:
python爬虫爬网络小说 https://blog.csdn.net/qq_36171287/article/details/90180862
python爬虫练习爬取信息 https://blog.csdn.net/qq_36171287/article/details/90575007
python爬虫实验浏览量——凉凉 https://blog.csdn.net/qq_36171287/article/details/91352388
爬虫的设计:
例子:
- import urllib.request
- #向指定的url地址发起请求,并返回服务器响应的数据(文件的对象)
- response = urllib.request.urlopen('http://www.baidu.com')
- #读取文件的全部内容,会把读取到的数值赋值给一个字符串变量
- data = response.read()
- print(data)
-
- #将爬取内容存储到a.txt
- with open(r'a.txt','wb') as f:
- f.write(data)
运行结果:
例子:
- import urllib.request
- #在urlretrieve执行过程中,会存储一些换成
- response = urllib.request.urlretrieve('http://www.baidu.com',filename=r'a.html')
- #清除缓存
- urllib.request.urlcleanup()
运行结果:
例子:
- #读取行,会把读取到的数值赋值给列表变量
- data = response.readlines()
- print(data)
运行结果:
返回当前环境的有关信息response.info()
- #response属性
- #返回当前环境的有关信息
- print(response.info())
运行结果:
HTTP响应状态码:
100 | 客户必须继续发出请求 |
101 | 客户要求服务器根据请求转换HTTP协议版本 |
200 | 交易成功 |
201 | 提示知道新文件的URL |
202 | 接受和处理、但处理未完成 |
203 | 返回信息不确定或不完整 |
204 | 请求收到,但返回信息为空 |
205 | 服务器完成了请求,用户代理必须复位当前已经浏览过的文件 |
206 | 服务器已经完成了部分用户的GET请求 |
300 | 请求的资源可在多处得到 |
301 | 删除请求数据 |
302 | 在其他地址发现 了请求数据 |
303 | 建议客户访问其他URL或访问方式 |
304 | 客户端已经执行了GET,但文件未变化 |
305 | 请求的资源必须以服务器指定的地址得到 |
306 | 前一版本HTTP中使用的代码, 现行版本中不再使用 |
307 | 申明请求的资源临时性删除 |
400 | 错误请求,如语法错误 |
401 | 请求授权失败 |
例子:
- response = urllib.request.urlopen('http://www.baidu.com')
-
- #返回状态码
- print(response.getcode())
运行结果:
解码unquote()
- url = 'https://www.so.com/s?ie=utf-8&src=hao_isearch2_3.6.9&q=%E7%A6%BB%E5%A4%A9%E5%A4%A7%E5%9C%A3&eci='
- #解码
- newUrl = urllib.request.unquote(url)
- print(newUrl)
运行结果:
编码quote()
- url = 'https://www.so.com/s?ie=utf-8&src=hao_isearch2_3.6.9&q=离天大圣='
- #解码
- newUrl = urllib.request.quote(url)
- print(newUrl)
运行结果:
- import urllib.request
- url = 'http://www.baidu.com'
- #模拟请求头
- headers = {
- 'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)'
- }
- #设置一个请求体
- req = urllib.request.Request(url,headers=headers)
- #发起请求
- response = urllib.request.urlopen(req)
- data = response.read().decode('utf-8')
- print(data)
运行结果:
如果网页长时间不反应,系统判断超时,无法爬取
- import urllib.request
- url = 'http://www.baidu.com'
- #模拟请求头
- headers = {
- 'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)'
- }
- #设置一个请求体
- req = urllib.request.Request(url,headers=headers)
- #发起请求
- for i in range(1,100):
- try:
- response = urllib.request.urlopen(req,timeout=0.5)
- print(len(response.read().decode('utf-8')))
- except:
- print('请求超时,继续下一个爬取')
运行结果:
https://www.runoob.com/http/http-methods.html
GET:通过url网址传递信息,可以直接在URL网址上添加要传递的信息
POST:可以向服务器提交数据,是一种比较流行的比较安全的数据传递方式
PUT:请求服务器存储一个资源,通常要指定存储的位置
DELETE:请求服务器删除一个资源
HEAD:请求获取对应的HTTP抱头信息
OPTIONS:可以获取当前URL所支持的请求类型
- GET:
- 特点:把数据拼接到请求路径的后面传递给服务器
- 优点:速度快
- 缺点:承载的数据量小,不安全
- 特点:把参数进行打包,单独传输
- 优点:数量大,安全(当对服务器数据进行修改时建议使用post)
- 缺点:速度慢
0, GET: GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。 资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
1, HEAD: HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。
2, PUT:这个方法沘较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。举个例子:如一个用于提交博文的URL, /addBlog。 如果用PUT,则提交的URL会是像这样的”/addBlog/abc123” ,其中abc123就是这个博文的地址。而如果用POST,则这个地址会在提交后由服务器告知客户端。目前大部分博客都是这样的。显然,PUT和POST用途是不一样的。具体用哪个还取决于当前的业务场景。
3, DELETE: 删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。
4, POST:向服务器提交数据。这个方法湖途广泛,几呼目前所有的提交操作都是靠这个完成。
5, OPTIONS:这个方法很有趣,但极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为"Allow" 的头,值是所支持的方法,如“GET, POST"
一起学习,一起进步 -.- ,如有错误,可以发评论
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。