爬虫第一天 - 总结

什么是爬虫? 就是一段自动获取互联网数据的程序 ( 网络爬虫就是为其提供信息来源的程序 ),,,请求网站并提取数据的自动化程序
学习爬虫的目的就是为了获取数据
大数库时代:数据如何产生?
1.大的公司企业:通过用户产生的数据
2.大的数据平台:通过收集或和其他的公司或是企业合作
3.国家政府或大的机构:通过省县乡或是其他方式统计产生的
4.数据咨询公司:通过收集或是和其他公司的合作,会根据数据做分析对比形成报表
5.如果以上方式都不能满足的时候,我们就需要一个爬虫工程师,去专门做数据的提取
爬虫的用途?
1.搜索引擎 2.比价工具(慧慧购物助手) 3.大的资讯网站(jobbole,今日头条...)
4.数据分析与研究积累原始数据资源 5.抢票软件等
客户端请求服务器 , 服务器响应客户端
网站的三大特性?

  1. 每一个资源都有一个url(又称统一资源定位符),是唯一的
  2. 网页都是使用HTML(超文本)文本展示数据的
  3. 通过HTTP/HTTPS(超文本传输协议),获取和传递HTML
    怎样实现一个爬虫?
    1.找到目标url
    2.根据url发起请求
    3.解析响应结果:(1). 提取目标数据
    (2).如何存在新的url,进一步提取(会执行1-3这个循环)
    4.爬虫结束:所有符合条件的url请求全部获取完毕,就意味着爬虫结束
    为什么要使用python做爬虫?
    python:语法简介,代码优美,可读性高,并且对各模块的支持比较好,有很多强大的 三方包,对多任务的处理也比较好,urllib,requests都能够很好的帮助我们实现一个爬虫项目,解析的库也非常多(lxml,bs4,pyquery...),并且还有强大的scrapy爬虫框架和scrapy_redis分布式爬虫框架.并且python作为一门胶水语言,对于其他语言的调度也是非常方便的。
    爬虫分为两类:
     1. 通用爬虫:通用爬虫是浏览器的重要组成部分,会将互联网上的所有网页下载到  本地,做了一个镜像备份,提取重要的数据(过滤数据,分词,等等)。
    搜索引擎的爬取的url 是通过什么方式获取的?
    1. 通过网站的外链
    2. 通过网页提交url:(百度:http://zhanzhang.baidu.com/linksubmit/url)
    3. 通过各大搜索引擎公司也会和 DNS 服务商的合作
      DNS : 讲我们的域名转化为ip的一种技术。
      2.聚焦爬虫:是面向主题的爬虫,由需求产生的,是一种定向的爬虫,
      在爬取网页 数据的时候,会对网页数据进行一些赛选,保证之抓取和
      需求相关的数据,以后我们更多的就是实现聚焦爬虫。
      通用爬虫(搜索引擎)的缺点?
    4. 需要遵守robot协议:robots协议 (也称:爬虫协议,机器人协议。) 全称是:      网络爬虫排除标准(Robots Exclusion Protocol) ,网站通过robots协议告诉
      搜索引擎哪些页面可以抓取 , 哪些页面不能抓取。
    5. 搜索引擎返回的结果是千篇一律的没有很好的针对性,不能够为特殊的群体返回对   应的数据.
    6. 搜索引擎一般情况下获取的是文本信息,处理图像,音频,视频,多媒体,还是有   困难的。
      做爬虫需要掌握的基础知识?
    7. python 的基础语法
         2. 前端知识 (html)
    8. 数据持久化的知识 ( 本地的存储,mysql ,mongodb,redis。)
    9. 了解基本的反爬手段 (header请求头,验证码,cookies,代理)
    10. 静态页面和动态页面页面(ajax,js),selenium(获取的页面源码是经过浏览器渲染
      之后的最终结果)
    11. 多任务处理,爬虫框架,分布式爬虫等等....

HTTP:超文本传输协议,主要使用来将html文本传输到本地浏览器.
HTTPS:作用和HTTP一致,只是多了SSL(安全套接字层),保证数据传输的安全性.
1.建立一个安全有效的数据传输通道,保证数聚的安全性.
    2.保证网站的真实性和有效性.
HTTP的端口号为80, HTTPS的端口号为443
HTTP通信由两部分组成: 客户端请求消息 与 服务器响应消息
HTTP请求主要分为Get和Post两种方法
GET是从服务器上获取数据,POST是向服务器传送数据

URI(Uniform Resource Identifier):统一资源标识符
URL(Uniform / Universal Resource Locator的缩写):统一资源定位符,是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。
URN(Universal Resource Name):统一资源名称,只命名资源而不指定如何定位资源
那三者之间有什么关系呢? URI是URL与URN的父类,URN用的很少,我们一般会提到URI和URL,每一个URL都是一个URI,但是并不是每一个URI都是一个URL.

url的组成部分:
1. scheme:协议
2. host:指的是域或者ip
3. port:端口
4. path:资源路径
5. query-string:请求的参数
6. anchor:锚点,主要是实现页面的定位作用
请求头:
User-Agent:模拟浏览器加载
Cookies:携带cookies第一可以维持会话,告诉浏览器用户的身份信息
Refere:告诉浏览器,当前请求,是从哪个页面发起的.
常见的状态码:
2xx:表示服务器成功接收请求并已完成整个处理过程。
200(OK 请求成功)。
3xx:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、 常用的状态码:
301: 永久重定向
302:临时重定向(所请求的页面已经临时转移至新的url)
4xx:客户端的请求有错误.
400:错误请求,服务器无法解析请求
401:未授权,没有进行身份验证
403:服务器拒绝访问
404:服务器无法找到被请求的网页
408:请求超时
5xx:服务器端出现错误
500:服务器内部错误
501:服务器不具备完成请求的功能
503:服务器不可用

爬虫的基本流程
 1:向服务器发起请求
 通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers 等信息,等待服务器的响应。
 2:获取响应内容
 如果服务器正常响应,会得到一个Response,Response的内容便是所要获取的页面内 容,类型可能有HTML、JSON、二进制文件(如图片、视频等类型)。
 3:解析内容
 得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。可能是     JSON,可以直接转成JOSN对象进行解析,可能是二进制数据,可以保存或者进一步处理
 4:保存内容
 保存形式多样,可以保存成文本,也可以保存至数据库,或者保存成特定格式的文件。
什么是Response和Request ?
 1. 浏览器发送消息给服务器这个过程就叫做 http Request
2. 服务器接受到浏览器发送的消息后,然后把消息传回给浏览器 这个过程叫做
httl Response
3. 浏览器收到服务器的Response信息后,会对信息做相应的处理,然后返回页面。
Request中包含哪些内容?
1:请求方式
主要是GET、POST两种类型,另外还有HEAD、PUT、DELETE、OPTIONS等。
2:请求URL
URL全称是统一资源定位符,如一个网页文档、一张图片、一个视频等都可以用URL 来唯一来确定
3:请求头
包含请求时的头部信息,如User-Agent、Host、Cookies等信息
4:请求体
请求时额外携带的数据,如表单提交时的表单数据
Response中包含哪些内容?
1:响应状态
有多种响应状态,如200代表成功,301代表跳转,404代表找不到页面,502代表服务 器错误等
2:响应头
如内容类型、内容长度、服务器信息、设置cookies等等
3:响应体
最主要的部分,包含了请求资源的内容,如网页HTML、图片二进制数据等。
示例代码:
‘’‘’‘’‘’
from fake_useragent import UserAgent
import requests
ua=UserAgent()

请求的网址

url="http://www.baidu.com"

请求头

headers={"User-Agent":ua.random}

请求网址

response=requests.get(url=url,headers=headers)

响应体内容

print(response.text)

响应状态信息

print(response.status_code)

响应头信息

print(response.headers)
‘’‘’‘’‘’‘’
怎样保存数据?
 1. 文本 (存文本,json)
2. 关系型数据库(myssql ....)
3. 非关系型数据库(mongodb ,redis ....)
4. 二进制文件(如:图片,视频....)

常用的请求报头:
  1. Host (主机和端口号)
Host:对应网址URL中的Web名称和端口号,用于指定被请求资源的Internet主机和端口号,通常属于URL的一部分。
2.Connection (链接类型) Connection:表示客户端与服务连接类型
3. Upgrade-Insecure-Requests (升级为HTTPS请求)
Upgrade-Insecure-Requests:升级不安全的请求,意思是会在加载 http 资源时自动替换成 https 请求,让浏览器不再显示https页面中的http请求警报
4. User-Agent (浏览器名称)
User-Agent:是客户浏览器的名称,以后会详细讲。
5. Accept (传输文件类型)
Accept:指浏览器或其他客户端可以接受的MIME(Multipurpose Internet Mail Extensions(多用途互联网邮件扩展))文件类型,服务器可以根 据它判断并返回适当的文件格式。 举例:
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文档、所有 的图像格式资源。
q是权重系数,范围 0 =< q <= 1,q 值越大,最先显示
6. Referer (页面跳转处)
Referer:表明产生请求的网页来自于哪个URL,用户是从该 Referer页面访问到当前请求的页面。
7. Accept-Encoding(文件编解码格式)
Accept-Encoding:指出浏览器可以接受的编码方式。
Accept-Language(语言种类)
Accept-Langeuage:指出浏览器可以接受的语言种类,如en或en-us指英语,zh或者zh-cn指中文,当服务器能够提供一种以上的语言版本时要用到。
8.Accept-Charset(字符编码) Accept-Charset:指出浏览器可以接受的字符编码。 举例:Accept-Charset:gb2312,utf-8
gb2312:标准简体中文字符集;
utf-8:UNICODE 的一种变长字符编码,可以解决多种语言文本显示问题,从而实现应用国际化和本地化。
Cookie (Cookie)
Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。

  1. Content-Type (POST数据类型)
    Content-Type:POST请求里用来表示的内容类型。
    举例:Content-Type = Text/XML; charset=gb2312:
    指明该请求的消息体中包含的是纯文本的XML类型的数据,字符编码采用“gb2312”。
    服务端HTTP响应(Response)
    HTTP响应也由四个部分组成,分别是: 状态行、消息报头、空行、响应正文
    cookie 和 session:
    Cookie:通过在 客户端 记录的信息确定用户的身份。
    Session:通过在 服务器端 记录的信息确定用户的身份。

str 和 bytes 和 str 的区别:
bytes 存储字节( 通常值在 range(0, 256))
str 存储unicode字符( 通常值在0~65535)
bytes 与 str 的转换
编码(encode)
str ----------> bytes
b = s.encode(encoding='utf-8')
解码(decode)
bytes ----------> str
s = b.decode(encoding='utf-8')ession: 一个用户发送的请求,必须在一个地方保存客户端的信息。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343