1.网页都有自己唯一的URL(统一资源定位符)来进行定位。
2.网页都使用HTML (超文本标记语言)来描述页面信息。
3.网页都使用HTTP/HTTPS(超文本传输协议)协议来传输HTML数据。
4. 首先确定需要爬取的网页URL地址
5.通过HTTP/HTTPS协议来获取对应的HTML页面
6. 提取HTML页面里有用的数据
7.Python 语法优美、代码简洁、开发效率高、支持的模块多,相关的HTTP请求模块和HTML解析模块非常丰富。
还有强大的爬虫Scrapy,以及成熟高效的 scrapy-redis分布式策略。
而且,调用其他借口也非常方便(胶水语言)
8.Python的基本语法知识
9.HTTP请求的处理,urllib、requests
处理后的请求可以模拟浏览器发送请求,获取服务器响应的文件
10.re、xpath、BeautifulSoup4(bs4)、jsonpath等
使用某种描述性一样来给我们需要提取的数据定义一个匹配规则
符合这个规则的数据就会被匹配。
11.通用的动态页面采集:Selenium + PhantomJS(无界面):模拟真实浏览器加载js、ajax等非静态页面数据
Tesseract:机器学习库,机器图像识别系统,可以处理简单的验证码,复杂的验证码可以通过手动输入/专门的打码平台
12.高定制性高性能(异步网络框架twisted),所以数据下载速度非常快,提供了数据存储、数据下载、提取规则等组件
13.scrapy-redis,在Scrapy的基础上添加了一套以 Redis 数据库为核心的组件。
让Scrapy框架支持分布式的功能,主要在Redis里做 请求指纹去重、请求分配、数据临时存储
User-Agent、代理、验证码、动态数据加载、加密数据。
数据价值,是否值的去费劲做反爬虫。
1. 机器成本 + 人力成本 > 数据价值,就不反了,一般做到封IP就结束了。
2. 面子的战争....
爬虫和反爬虫之间的斗争,最后一定是爬虫获胜!
为什么?
15.Http协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法。
16.Https(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层
17.当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。
18.当我们在浏览器输入URL http://www.google.com 的时候,浏览器发送一个Request请求去获取 http://www.google.com 的html文件,服务器把Response文件对象发送回给浏览器。
19.浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。
20.当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。
21.服务器和客户端的交互仅限于请求/响应过程,结束之后便断开,在下一次请求时,服务器会认为新的客户端。
为了维护他们之间的链接,让服务器知道这是前一个用户发送的请求,必须在一个地方保存客户端的信息。
22.所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。 在Python中有很多库可以用来抓取网页,我们先使用urllib。
23.# -*- coding:utf-8 -*-
import urllib.request
# 向指定的url地址发送请求,并返回服务器响应的类文件对象
response = urllib.request.urlopen("http://www.baidu.com/")
# 服务器返回的类文件对象支持Python文件对象的操作方法
# read()方法就是读取文件里的全部内容,返回字符串
html = response.read().decode('utf-8')
# 打印响应内容
print(html)
24.浏览器 就是互联网世界上公认被允许的身份,如果我们希望我们的爬虫程序更像一个真实用户,那我们第一步,就是需要伪装成一个被公认的浏览器。用不同的浏览器在发送请求的时候,会有不同的User-Agent头。