한 爬?
정의 웹 크롤러 : 인터넷 또는 스크립트에 자동 기어 프로그램 정보
(A) 파충류는 문제를 해결할 수있다
- 콜드 시작 문제 해결
- 기본 검색 엔진
- 지식지도 구축, 기계 학습 지식지도를 구축 할 수 있도록
- 당신은 제품 패리티 다양한 소프트웨어를 생성 할 수 있습니다, 경향 분석
두 통용 爬? 일본 聚焦 爬?
사용 시나리오, 웹 크롤러 및 크롤러는 일반 대형으로 나누어 초점을 맞추고.
(한) 통용 爬?
검색 엔진
- 검색 엔진의 주요 구성 요소
일반 파충류 : 전체 인터넷 페이지를 크롤링 한 후 로컬로 저장합니다. (데이터 정제를하지 않았다)
순서로 페이지를 크롤링 일반적인 파충류, 우리는 사이트의 URL로 필요하지만, 검색 엔진은 모든 페이지를 검색 할 수 있습니다. 그래서 일반적인 파충류 URL은 모든 페이지를 포함 할 것이다.
어떻게 검색 엔진 URL을 얻을 :- 새 사이트 검색 엔진 이니셔티브에 URL을 제출
- (가능한 한 검색 엔진의 범위에서) 다른 사이트에 체인 외부 새 사이트를 설정
- 검색 엔진과 협력 (예 : DNSPod 등) DNS 확인 서비스 제공 업체, 새 도메인 신속하게 기어 될 것이다.
- 모든 엔진 워크 플로우 :
- 단계 : 크롤링 페이지
- 그것은 큐 URL, 웹 크롤링 콘텐츠를 크롤링 할 URL에 의해 공통 크롤러에 추가되었습니다.
- 단계 : 데이터 저장 :
- 로컬까지 크롤링 웹 페이지를 저장합니다. 이 과정은 몇 가지 디엠 퍼시스 작업이있을 것이다. 페이지의 내용이 대부분 반복하면, 검색 엔진이 저장되지 않을 수 있습니다.
- 세 번째 단계 : 전처리
- 텍스트를 추출
- 중국어 단어
- 노이즈를 제거 (등 저작권 텍스트, 네비게이션, 광고 등)
- 인덱스 처리
- 네 단계 : 사이트의 순위를 설정 검색 서비스의 사용을 제공 (페이지 랭크 값)
- 단계 : 크롤링 페이지
- 검색 엔진의 한계 :
- 검색 엔진은 원래의 페이지를 크롤링 할 수 있지만 페이지 내용 90 % 쓸모가 없다.
- 검색 엔진은 다른 산업, 다른 사람의 특정 요구를 충족시킬 수 없다.
- 문자 메시지를 크롤링 일반 파충류은 등 추가 정보 동영상, 문서, 오디오, 사진, 대한 크롤링 할 수 없습니다.
- 만 키워드 기반 쿼리는 의미 쿼리를 기반으로.
(B) 포커싱 러
크롤러 집중 : 웹 크롤링의 구현에 콘텐츠 필터링 프로세스가 크롤링 및 페이지의 요구에 관련 만 정보를 제공하기 위해 노력할 것입니다.
둘째, 파충류 제제
(A) 로봇 프로토콜
로봇 프로토콜 : 크롤러 제외 기준.
역할 : 그 콘텐츠를 크롤링 할 수있는 검색 엔진을 말해, 오를 수없는
(B) 사이트 맵 sitmap
다음 사이트 맵의 내용, 당신은 페이지를 볼 수 있습니다
https://help.bj.cn/
(C) 위치의 예상 크기
사이트를 사용하여 검색 엔진 바이두를 사용하여 도메인 이름
(D) 어떤 기술을 사용하여 사이트를 식별
설치
pip install builtwith
在python的交互模式下输入:
import builtwith
builtwith.parse('http://www.maoyan.com')
(E)는 사이트의 소유자가 누군지 알 필요가
安装python-whois:pip install python-whois
在python交互模式下输入:
import whois
whois.whois('http://www.sina.com.cn')
세, HTTP 및 HTTPS
(A) HTTP 프로토콜은 무엇입니까?
HTTP : 하이퍼 텍스트 전송 프로토콜
제약 사양은 발표와 HTML 페이지를 받게되었다
HTTPS : HTTP 보안 사무소, HTTP에서의 SSL 레이어를 추가
(B)의 포트의 개수
http 포트 (80)
HTTPS 포트 번호는 443입니다
특성 (III) http 프로토콜
- 응용 프로그램 계층 프로토콜
- 연결형 : 각 요청은 독립적
- HTTP 1.1 연결을 추가 연결 유지, 머리를 연결하는 클라이언트와 서버가 긴 연결은 상기의
- 비 상태 : 때마다 클라이언트가 기록 요청 상태를 요청할 수 없습니다. 즉 두 요청 사이에 통신.
- 쿠키 및 세션 상태를 기록 할 수 있습니다
(D) URL : 범용 리소스 로케이터
왜 당신은 URL을 통해 인터넷에서 모든 리소스를 찾을 수 있습니다?
에 http : // IP : 포트 / 경로
-
IP : 위치 컴퓨터
-
포트 : 포트 번호 - 인터넷에서 컴퓨터를 입력합니다
-
경로 : 경로는 컴퓨터에서 해당 리소스를 찾을 수
#이 세 가지 특수 기호는
? - 매개 변수 요청
요청 매개 변수 및 연결 - &를- 앵커 : 요청 URL에서 페이지 점프 앵커의 위치를 지정
-
基本格式:
scheme://host[:port#]/path/…/[?query-string][#anchor]
scheme:协议(例如:http, https, ftp)- host:服务器的IP地址或者域名
- port:服务器的端口(如果是走协议默认端口,缺省端口80)
- path:访问资源的路径
- query-string:参数,发送给http服务器的数据
- anchor:锚(跳转到网页的指定锚点位置)
在python中,有一个模块可以帮助我们解析url。
代码:
from urllib import parse
url = 'http://localhost.com:8080/index.htmusername="zhangsan"&password="123"'
print(parse.urlparse(url))
输入内容:
ParseResult(
scheme='http',
netloc='localhost.com:8080',
path='/index.htm',
params='',
query='',
fragment='')
(五)http工作过程
1.地址解析,将url解析出对应的内容:
scheme:协议(例如:http, https, ftp)
host:服务器的IP地址或者域名
port:服务器的端口(如果是走协议默认端口,缺省端口80)
path:访问资源的路径
query-string:参数,发送给http服务器的数据
anchor:锚(跳转到网页的指定锚点位置)
2.封装http请求数据包
3.封装成TCP包,建立TCP连接(TCP的三次握手)
- TCP握手协议
- 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
SYN:同步序列编号(Synchronize Sequence Numbers) - 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
- 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据
- 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
4.客户端发送请求
5.服务器发送响应
6.服务器关闭TCP连接
(六)当在浏览器输入一个url,为什么可以加载出一个页面?
为什么在抓包的过程中,请求了一个url,会出现很多的自愿请求
- 当我们在浏览器输入一个url,客户端会发送这个url对应的一个请求到制定服务器获取内容;
- 服务器收到这个请求,解析出对应的内容,之后将内容封装到响应里面发送给客户端;
比如index.html页面 - 当客户端拿到这个html页面,会查看这个页面中是否有css、js、image等url,如果有,在分别进行请求,获取到这些资源;
- 客户端会通过html的语法,将获取到的所有内容完美的显示出来。
(七)客户端请求
- 组成:请求行、请求头部、空行、请求数据四个部分组成
- 请求方法get/post
- get方法:
get,通过服务器上请求参数来获取资源,?后面是请求参数,用&拼接,不安全,传输参数大小受限 - post请求:
post,向服务器传递封装在请求实体里的数据,可以传递更多内容,安全 - get和post的区别:
- get是从服务器获取内容,post是向服务器传递内容
- get不安全,因为参数拼接在url后面。post比较安全,因为参数是放在实体里
- get传参他笑受限,post不受限
- get方法:
- 重要的请求头:
- User-Agent:客户端请求标识
- Accept:(传输文件类型)允许传入的文件类型
- Referer:表名产生请求的网页来自于哪个url,用户是从该Referer页面访问到当前请求的页面
- cookie (cookie):在做登录的时候需要封装这个头
- Content-Type (POST数据类型)
- 发送POST请求时,需要特别注意headers的一些属性:
- Content-Length: 144; 是指发送的表单数据长度为144,也就是字符个数是144个
- X-Requested-With:XMLhttpReauest; 表示ajax异步请求
(八)服务响应
- 组成:状态行,响应头,空行,响应正文。
- 重要响应头:
- Content-Type: text/html; charset = UTF-8; 告诉客户端,资源文件的类型,还有字符编码
- 状态码:
- ~ 199 100 : 서버가 나머지 프로세스를 완료 요청을 제출 계속 클라이언트에 성공 수신부 요청을 나타냅니다
- 200 ~ 299 : 서버가 요청을 성공적으로받은 나타내며 전체 프로세스를 완료했습니다. 일반적인 200 (OK 요청이 성공했습니다)
- (300) 399 : 요청을 완료하기 위해, 고객은 추가로 요청을 수정해야합니다. 예를 들어 요청 된 리소스가 새로운 주소로 이동 된, 일반적으로 302 (요청 된 페이지가 새 임시 URL로 전송 됨), 307, 304 (캐시 리소스)
- (400) 499에 : 오류에 대한 클라이언트의 요청, 일반 404 (서버가 요청한 페이지를 찾을 수 없습니다), 403 (서버가 액세스를 거부 액세스가 충분히 -DDos하지 않습니다)
- 500 ~ 599 : 서버 오류는 일반적으로 500 (요청이 완료되지 않은 서버가 예기치 않은 상황 발생.) 발생