使用爬虫的时候记得进入虚拟环境
查看已有的虚拟环境
- workon
创建虚拟环境(创建完之后自动进入运行虚拟环境)
- virtualenv 要创建的虚拟环境名称
进入虚拟环境
- workon 要进入的虚拟环境名称
关闭虚拟环境
- deactivate
删除虚拟环境
- rmvirtualenv 要删除的虚拟环境名称
什么是网络爬虫?
是按照一定规则执行,自动的抓取互联网的信息的程序
也就是模拟客户端进行发送请求,接受响应结果,也是按照一定的规则执行的程序
从原则上来说:浏览器能做到的,爬虫也能做到
爬虫的分类:通用爬虫和聚焦爬虫
通用爬虫
通用爬虫:是搜索引擎抓取系统的重要组成部分。
工作原理
第一步:抓取网页
获取目标的url(一般尊守robot协议)
Robot协议:全称“网络爬虫排除标准”,网站通过Robot协议告诉引擎那些页面可以可提取数据,那些不可提取
第二步:数据储存
通过爬虫爬取到了网页,将数据存到原始页面数据库或者本地
第三步:预处理
将爬虫爬取到的页面,进行各种步骤的预处理
第四步:提供检索服务,网站排名
对信息进行组织和处理后,为用户提供关键字检索服务,将用户检索相关的信息展示给用户。
注意:通用爬虫还是有局限性的
返回的页面数据中,有90%的数据内容对用户来说是无用的
无法提供针对某个用户的搜索结果
出现了大量的不同类型的数据如:图片,视频,音频等多媒体这些文件,通用爬虫就有些无能为力
有时候无法准确理解用户的要求
聚焦爬虫
是"面向特定主题需求"的一种网络爬虫程序,它与通用搜索引擎爬虫的区别在于:
聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。
七层协议:
七层模型通过七个层次的结构模型使用不同的系统不同的网络实现可靠的通讯
应用层:
网络服务与用户的一个的接口
协议有:HTTP \HTTPS
http:名为超文本传输协议
用于从网络传送的超文本数据到本地浏览器的传送协议端口号:80
https:是HTTP的安全版,在HTTP中加了SSL(安全套接层)主用于Web的安全传输协议端口号:443
表示层:
主要功能是定义数据格式及加密对上层数据或信息进行变换,并按照一定的格式传送给会话层
会话层:
建立、管理、终止会话
对应主机进程,本地主机与远程主机正在进行的会话
传输层:
定义传输数据的协议端口号,流控和差错校验
TCP/UDP
网路层:
进行逻辑地址寻址,实现不同网络之间的路径选择
数据链路层:
建立逻辑连接,进行硬件地址寻址、差错校验等功能。
物理层:
建立、维护、断开物理连接
URL介绍
URI:统一资源标识符
URL:统一资源定位符
URN:统一资源名称
URI是URL与URN的父类,URN用的很少,一般只提取URL和URI,每一个URL都是一个URI,但是并不是每一个URI都是一个URL。
基本格式:
scheme://host[:port#]/path/…/[?query-string][#anchor]
- scheme:协议(例如:http, https, ftp)
- host:服务器的IP地址或者域名
- port:服务器的端口(如果是走协议默认端口,缺省端口80)
- path:访问资源的路径
- query-string:参数,发送给http服务器的数据
- anchor:锚(跳转到网页的指定锚点位置)
序号 | 方式 | 说明 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体。 |
2 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 |
3 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
4 | DELETE | 请求服务器删除指定的页面。 |
5 | HEAD | 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 |
6 | CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 |
7 | OPTIONS | 允许客户端查看服务器的性能。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
HTTP请求方式主要分为两种GET和POST
GET:从服务器上获取数据
POST:向服务器传送数据
常用的请求头
- User-Agent:是客户浏览器的名称
- Cookie:浏览器用这个属性向服务器传送Cookie。
- Referer:表明产生请求的网页来自于那个URL
- HOST:对应网址URL中的Web名称和端口号。
- Accept:浏览器或其他客户端可以接受的MIME文件类型
Accept: /:表示什么都可以接收。
Accept:image/gif:表明客户端希望接受GIF图像格式的资源。
Accept:text/html:表明客户端希望接受html文本。
Accept: text/html, application/xhtml+xml;q=0.9, image/*;q=0.8:表示浏览器支持的 MIME 类型分别是 html文本、xhtml和xml文档、所有 的图像格式资源。
常见的响应状态码
- 2xx:表示服务器成功接收请求并已完成整个处理过程
200(OK 请求成功)
- 3xx:为了完成请求,客户需进一步请求
301(永久重定向)
302(临时重定向)
- 4xx:客户端请求错误
400(错误请求,服务器无法解析)
401(未授权,没有进行身份验证)
403(服务器拒绝访问)
404(服务器无法找到被请求的页面)
405(请求方式不被允许)
408(请求超时)
- 5xx:服务器端出现错误
500(服务器内部错误)
501(服务器不具备完成请求的功能)
503(服务器不可用)
STR和BYTES的区别
对于python2
来说str和bytes没有区别,但在python3
中区分了
在python3中str类型使用encode方法转化为bytes类型,而decode方法和encode方法正好相反
文件I/O流操作
I:输入
O:输出

序号 | 函数、方法 | 说明 |
---|---|---|
01 | open | 打开文件,并且返回文件操作对象 |
02 | read | 将文件内容读取到内存 |
03 | write | 将指定内容写入文件 |
04 | close | 关闭文件 |
有两种写入方法:
一:
with open(‘文件名’,’读写方式’) as file:
file.write(‘添加你要写的数据’)
file.close
二:
file = open(‘文件名’,’读写方式’)
file.write(’添加你要的数据’)
file.read()
file.close()
写入列表类型的数据
import csvwith open("test.csv","w") as csvfile:#创建文件句柄writer = csv.writer(csvfile)#先写入columns_namewriter.writerow(["index","a_name","b_name"])#写入多行用 writerowswriter.writerows([[0,1,3],[1,2,3],[2,3,4]])#单行写入writerowwriter.writerow([0,1,3])
写入字典类型的数据
import csvWith open(‘test.csv’,’w’) as csvfile:fieldnames = ['index','a_name','b_name’]#创建文件句柄writer = csv.DictWriter(csvfile,fieldnames=fieldnames)先写入头信息即fieldnames = ['index','a_name','b_name’]writer.writeheader()writer.writerow({'index’:’1’,'a_name’:’2’,'b_name’:’3’})
读取csv文件:
import csvimport csv with open("test.csv","r") as csvfile: #创建一个读取文件的句柄reader = csv.reader(csvfile)#遍历获取每一行数据for line in reader:print (line)
网友评论