注册
登录
提问时间:2019/1/7 10:41:36    楼主:未知网友   阅读量:267

一、字符串知识点:

bytes:二进制(互联网上数据都是以二进制的方式传输的)

str:unicode编码的呈现形式,常用的实现方式是UTF-8

str转换为bytes的方法:encode()

bytes转换为str的方法:decode()

二、HTTP与HTTPS知识点:

HTTP:超文本传输协议,默认端口号80,性能更好

HTTPS:HTTP+SSL(安全套接字层),默认端口号443,安全性更好

三、爬虫的概念与流程:

爬虫是模拟浏览器发送请求,获取响应

url-->发送请求-->获取响应-->提取url-->提取数据-->保存

四、url的形式:

scheme:协议(http,https,ftp)

host:服务器的IP地址或者域名(www.baidu.com)

port:服务器的端口(80或者443)

path:访问资源的路径,百度搜索爬虫(/s?wd=爬虫&rsv_spt=1&rsv_iqid=0x8d278b16000116e5&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=9&rsv_sug1=8&rsv_sug7=100&rsv_sug2=0&inputT=1138&rsv_sug4=2397)

query-string:参数,发送给http服务器的数据

anchor:锚(跳转到网页的指定锚点位置)

完整的url例子:

https://www.baidu.com/s?wd=爬虫&rsv_spt=1&rsv_iqid=0x8d278b16000116e5&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=9&rsv_sug1=8&rsv_sug7=100&rsv_sug2=0&inputT=1138&rsv_sug4=2397

五、HTTP请求头:

打开F12,点击Network,在ALL列表找到访问的Host,查看request-Headers。

Host:主机和端口号

connection:链接类型

Upgrade-Insecure-Requests:一般为1,升级为HTTPS请求

User-Agent:浏览器名称,需要模拟这个

Accept:多个传输文件类型

Accept-Encoding:文件编解码格式

Accept-Language:支持的语言类型

六、响应状态码:

200:成功

302or307:临时转移至新的url

404:相应失败

500:服务器内部错误

七、爬虫基础知识点

1、爬虫是什么:

抓取网页数据的程序。

2、爬虫怎么抓取网页数据:

网页都有自己唯一的URL(统一资源定位符)来进行定位。

网页都是用HTML(超文本标记语言)来描述页面信息。

网页都是使用HTTP/HTTPS(超文本传输协议)协议来传输HTML数据。

①、首先确定需要爬取的网页URL地址。

②、通过HTTP/HTTPS协议来获取对应的HTML页

③、提取HTML页面里面有用的数据(反复精练处理数据得到目标数据)。

3、如何抓取HTML页面:

①、HTTP请求的处理,urllib、urllib2、requests

②、处理后的请求可以模拟浏览器发送请求、获取服务器响应的文件。

③、解析服务器相应的内容:re,xpath、jsonpath、pyquery等。

使用某一种描述性来给我们需要的数据定义一个匹配规则,

符合这个规则的数据就会被匹配。比如常用的re,正则表达式。

④、如何采集动态HTML、验证码的处理。

通常的动态页面采集:Selenium+PhantomJS(无界面):模拟真实浏览器加载js等非静态数据。

机器学习库,机器图像识别系统:Tesseract,可以处理简单的验证码,复杂的交给打码平台

⑤、Scrapy框架:(Scrapy,Pyspider)

高定制性、高性能(异步网络框架twisted):速度下载快,提供数据存储,数据下载,提取规则等组件。

⑥、分布式策略:scrapy-redis,以Redis数据库为核心的一套组件

让Scrapy框架支持分布式的功能,主要在Redis里做请求指纹去重、请求分配、数据临时存储。

⑦、爬虫-反爬虫-反反爬虫:爬虫最难的就是网站另一边的反爬虫人员。

User-Agent、代理、验证码、动态数据加载、加密数据等。

数据价值是否值得费劲做爬虫,机器成本+人力成本>数据价值,一般能爬出来。