在搜索python知识的时候一直看到爬虫相关知识,感觉挺好玩的,打算简单了解一下。
1、
在用户浏览网页的过程中,我们可能会看到许多好看的图片,这个过程其实就是用户输入网址之后,经过DNS服务器,找到服务器主机,向服务器发出一个请求,服务器经过解析之后,发送给用户的浏览器 HTML、JS、CSS 等文件,浏览器解析出来,用户便可以看到形形色色的图片了。
因此,用户看到的网页实质是由 HTML 代码构成的,爬虫爬来的便是这些内容,通过分析和过滤这些 HTML 代码,实现对图片、文字等资源的获取。
2、URL的含义
URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL的格式由三部分组成:
①第一部分是协议(或称为服务方式)。
②第二部分是存有该资源的主机IP地址(有时也包括端口号)。
③第三部分是主机资源的具体地址,如目录和文件名等。
爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据,准确理解它的含义对爬虫学习有很大帮助。
3、python 3.x中urllib库和urilib2库合并成了urllib库。。
其中urllib2.urlopen()变成了urllib.request.urlopen() urllib2.Request()变成了urllib.request.Request()
4、urllib.request.urlopen(url, data, timeout)第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。第二三个参数是可以不传送的,data默认为空None,timeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT
第一个参数URL是必须要传送的,在这个例子里面我们传送了百度的URL,执行urlopen方法之后,返回一个response对象,返回信息便保存在这里面。
import urllib.request as request url="http://www.baidu.com" data=request.urlopen(url).read() data=data.decode('UTF-8') print(data)
5、如果要抓取百度上面搜索关键词为Jecvay Notes的网页
import urllibimport urllib . requestdata = { }data [ 'word' ] = 'Jecvay Notes'url_values = urllib . parse . urlencode ( data )url = "http://www.baidu.com/s?"full_url = url + url_valuesdata = urllib . request . urlopen ( full_url ) . read ( )data = data . decode ( 'UTF-8' )print ( data )
6、爬虫中用到的数据结构
1) 队列
collection.deque 完成高效队列任务
from collections import deque
2)集合
set:无序,不包含重复元素的结构
一般用来测试是否已经包含了某种元素,或对众多元素去重。