파충류으로, HTTP 및 HTTPS

면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
이 링크 : https://blog.csdn.net/weixin_44863429/article/details/102772436

한 爬?

정의 웹 크롤러 : 인터넷 또는 스크립트에 자동 기어 프로그램 정보

(A) 파충류는 문제를 해결할 수있다

  1. 콜드 시작 문제 해결
  2. 기본 검색 엔진
  3. 지식지도 구축, 기계 학습 지식지도를 구축 할 수 있도록
  4. 당신은 제품 패리티 다양한 소프트웨어를 생성 할 수 있습니다, 경향 분석

두 통용 爬? 일본 聚焦 爬?

사용 시나리오, 웹 크롤러 및 크롤러는 일반 대형으로 나누어 초점을 맞추고.

(한) 통용 爬?

검색 엔진

  1. 검색 엔진의 주요 구성 요소
    일반 파충류 : 전체 인터넷 페이지를 크롤링 한 후 로컬로 저장합니다. (데이터 정제를하지 않았다)
    순서로 페이지를 크롤링 일반적인 파충류, 우리는 사이트의 URL로 필요하지만, 검색 엔진은 모든 페이지를 검색 할 수 있습니다. 그래서 일반적인 파충류 URL은 모든 페이지를 포함 할 것이다.
    어떻게 검색 엔진 URL을 얻을 :
    • 새 사이트 검색 엔진 이니셔티브에 URL을 제출
    • (가능한 한 검색 엔진의 범위에서) 다른 사이트에 체인 외부 새 사이트를 설정
    • 검색 엔진과 협력 (예 : DNSPod 등) DNS 확인 서비스 제공 업체, 새 도메인 신속하게 기어 될 것이다.
  2. 모든 엔진 워크 플로우 :
    • 단계 : 크롤링 페이지
      • 그것은 큐 URL, 웹 크롤링 콘텐츠를 크롤링 할 URL에 의해 공통 크롤러에 추가되었습니다.
    • 단계 : 데이터 저장 :
      • 로컬까지 크롤링 웹 페이지를 저장합니다. 이 과정은 몇 가지 디엠 퍼시스 작업이있을 것이다. 페이지의 내용이 대부분 반복하면, 검색 엔진이 저장되지 않을 수 있습니다.
    • 세 번째 단계 : 전처리
      • 텍스트를 추출
      • 중국어 단어
      • 노이즈를 제거 (등 저작권 텍스트, 네비게이션, 광고 등)
      • 인덱스 처리
    • 네 단계 : 사이트의 순위를 설정 검색 서비스의 사용을 제공 (페이지 랭크 값)
  3. 검색 엔진의 한계 :
    • 검색 엔진은 원래의 페이지를 크롤링 할 수 있지만 페이지 내용 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 프로토콜

  1. 응용 프로그램 계층 프로토콜
  2. 연결형 : 각 요청은 독립적
    • HTTP 1.1 연결을 추가 연결 유지, 머리를 연결하는 클라이언트와 서버가 긴 연결은 상기의
  3. 비 상태 : 때마다 클라이언트가 기록 요청 상태를 요청할 수 없습니다. 즉 두 요청 사이에 통신.
    • 쿠키 및 세션 상태를 기록 할 수 있습니다

(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状态,完成三次握手。
      完成三次握手,客户端与服务器开始传送数据

4.客户端发送请求

5.服务器发送响应

6.服务器关闭TCP连接

(六)当在浏览器输入一个url,为什么可以加载出一个页面?

为什么在抓包的过程中,请求了一个url,会出现很多的自愿请求

  1. 当我们在浏览器输入一个url,客户端会发送这个url对应的一个请求到制定服务器获取内容;
  2. 服务器收到这个请求,解析出对应的内容,之后将内容封装到响应里面发送给客户端;
    比如index.html页面
  3. 当客户端拿到这个html页面,会查看这个页面中是否有css、js、image等url,如果有,在分别进行请求,获取到这些资源;
  4. 客户端会通过html的语法,将获取到的所有内容完美的显示出来。

(七)客户端请求

  1. 组成:请求行、请求头部、空行、请求数据四个部分组成
  2. 请求方法get/post
    • get方法:
      get,通过服务器上请求参数来获取资源,?后面是请求参数,用&拼接,不安全,传输参数大小受限
    • post请求:
      post,向服务器传递封装在请求实体里的数据,可以传递更多内容,安全
    • get和post的区别:
      • get是从服务器获取内容,post是向服务器传递内容
      • get不安全,因为参数拼接在url后面。post比较安全,因为参数是放在实体里
      • get传参他笑受限,post不受限
  3. 重要的请求头:
    • User-Agent:客户端请求标识
    • Accept:(传输文件类型)允许传入的文件类型
    • Referer:表名产生请求的网页来自于哪个url,用户是从该Referer页面访问到当前请求的页面
    • cookie (cookie):在做登录的时候需要封装这个头
    • Content-Type (POST数据类型)
    • 发送POST请求时,需要特别注意headers的一些属性:
      • Content-Length: 144; 是指发送的表单数据长度为144,也就是字符个数是144个
    • X-Requested-With:XMLhttpReauest; 表示ajax异步请求

(八)服务响应

  1. 组成:状态行,响应头,空行,响应正文。
  2. 重要响应头:
    • Content-Type: text/html; charset = UTF-8; 告诉客户端,资源文件的类型,还有字符编码
  3. 状态码:
    • ~ 199 100 : 서버가 나머지 프로세스를 완료 요청을 제출 계속 클라이언트에 성공 수신부 요청을 나타냅니다
    • 200 ~ 299 : 서버가 요청을 성공적으로받은 나타내며 전체 프로세스를 완료했습니다. 일반적인 200 (OK 요청이 성공했습니다)
    • (300) 399 : 요청을 완료하기 위해, 고객은 추가로 요청을 수정해야합니다. 예를 들어 요청 된 리소스가 새로운 주소로 이동 된, 일반적으로 302 (요청 된 페이지가 새 임시 URL로 전송 됨), 307, 304 (캐시 리소스)
    • (400) 499에 : 오류에 대한 클라이언트의 요청, 일반 404 (서버가 요청한 페이지를 찾을 수 없습니다), 403 (서버가 액세스를 거부 액세스가 충분히 -DDos하지 않습니다)
    • 500 ~ 599 : 서버 오류는 일반적으로 500 (요청이 완료되지 않은 서버가 예기치 않은 상황 발생.) 발생

추천

출처blog.csdn.net/weixin_44863429/article/details/102772436