爬虫類の基礎、HTTPとHTTPS

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/weixin_44863429/article/details/102772436

一、爬虫

定義されたWebクローラ:インターネットまたはスクリプトで自動的にクロールプログラム情報

(A)爬虫類、問題を解決することができます

  1. コールドスタート問題解決
  2. 基本的な検索エンジン
  3. 知識マップを構築し、機械学習、知識マップの構築を支援
  4. あなたが商品のパリティソフトウェアのさまざまなを生成することができ、傾向分析

二、通用爬虫和聚焦爬虫

使用シナリオ、一般のクローラーに分かれてピント合わせウェブクローラとクローラ。

(一)通用爬虫

サーチエンジン

  1. 検索エンジンの主要部品
    全般爬虫類:全体のインターネットページを下にクロールした後、それをローカルに保存します。(データクリーニングを行いませんでした)
    順でページをクロール共通爬虫類を、私たちは、サイトのURLする必要がありますが、検索エンジンは、すべてのページを検索することができます。だから、一般的な爬虫類のURLは、すべてのページを伴います。
    どのように検索エンジンはURLを取得:
    • 新しいサイトの検索エンジンのイニシアチブにURLを送信
    • (可能な限りの検索エンジンの範囲内で)他のサイトへの連鎖外の新しいサイトを設定します
    • 検索エンジンとの連携(例えばDNSPodなど)DNS解決サービスプロバイダ、新しいドメインはすぐにクロールされます。
  2. すべてのエンジンのワークフロー:
    • ステップ1:クロールページ
      • これは、キューのURL、ウェブクローリングのためのコンテンツをクロールするURLによって、共通のクローラに追加されました。
    • ステップ2:データ保存:
      • 現地までクロールのWebページを保存します。このプロセスは、いくつかのデエンファシス時があるでしょう。ページの内容がほとんど繰り返した場合は、検索エンジンが保存されないことがあります。
    • 第三段階:前処理
      • テキストを抽出
      • 漢語
      • ノイズを排除する(など著作権表示のテキスト、ナビゲーション、広告、など)
      • インデックス処理
    • ステップ4:検索サービス(ページランク値)の使用を提供し、サイトの順位を設定します
  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. ステートレス:毎回、クライアントが記録要求のステータスを要求することはできません。すなわち、2つの要求の間には通信。
    • クッキーとセッション状態は、レコードを助けることができます

(D)URL:ユニフォームリソースロケータ

なぜあなたは、URLを介してインターネット上の任意のリソースを見つけることができますか?

http:// IP:ポート/パス

  • IP:ポジショニングコンピュータ

  • ポート:ポート番号 - インターネットからコンピュータを入力します

  • パス:コンピュータ内の対応するリソースを見つけるためのパス

    #3つの特殊な記号があります
    ?要求パラメータ-
    - &リクエストパラメータとの接続は、

    - アンカー:要求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要求は成功しました)
    • 399から300:要求を完了するためには、顧客はさらに要求を絞り込む必要があります。たとえば、次のように要求されたリソースは、一般的に302(要求されたページが新しい一時的なURLに転送されている)、307および304(キャッシュリソース)、新しいアドレスに移動されました
    • 499から400:エラーのためにクライアントの要求、一般的な404(サーバがリクエストされたページを見つけることができません)、403(サーバーがアクセスを拒否し、アクセスが十分-DDosではありません)
    • 〜599 500:サーバーエラーが発生し、一般的に500(要求は、サーバーが不測の事態に遭遇完了しませんでした。)

おすすめ

転載: blog.csdn.net/weixin_44863429/article/details/102772436