day03初心者の爬虫類

まず、爬虫類の原則
1、インターネットとは何か:
と呼ばれるインターネットとコンピュータに、ネットワーク機器の束を、インターネットを参照する
2、インターネットの設立の目的は?
目的は、データのインターネットデータの共有や転送確立することである
:データは何3を
、そのような淘宝網、Jingdongは、製品情報など。
一部の証券投資情報東日本フォーチュン、雪だるまネットワーク。
このように自由な情報の可用性など、家庭のチェーン、。
12306チケット情報。
図4に示すように、インターネットの全体のプロセスは:
平均的なユーザー:オープンブラウザ-標的部位送信要求に-応答データをフェッチ-ブラウザにレンダラ
クローラ:アナログブラウザ-標的部位送信要求に-応答データをフェッチ-有効なデータを抽出します-データに永続化
5、ブラウザは何のためにリクエストを送信しますか?
httpプロトコル要求
クライアント:
ブラウザがソフトウェアである-のクライアントIPおよびポート
サーバー:
http://www.jd.com/
- JingdongはサーバーのIPとポートwww.jd.com(Jingdongはドメイン名)が決意を-dns
HTTP + SSL://www.jd.com
リクエストサーバがリンクを確立することができます送信するためにクライアントのIP IPとポートとポート、応答データをフェッチ
図6に示すように、全体のプロセス爬虫類:
(ライブラリを要求する必要があります。要求は、ライブラリ、セレン要求ライブラリを要求する)要求を送信する
(要求を介してデータに応答して返される限り、サーバへの送信要求など)応答データをフェッチ
(解析し、データを抽出すること解析ライブラリを必要とする:再、BeautifulSoup4、XPathが...)
ローカル(ファイル処理、データベース、MongoDBのリポジトリ)に保存された
2、要求がライブラリリクエスト
1のインストールおよび使用
オープンCMDの
入力を:PIP3のインストールを要求
、2をグラブビデオ
3、パケットキャプチャ解析
ブラウザを開くために開発者モードフィルタ--->ネットワークを選択し
たページを見つけるために、接尾辞xxx.html(応答テキスト)を訪問しました
1)要求URL(ウェブサイトのアドレスが訪問

2)リクエストメソッドの
GET:
リソースへの直接アクセスを要求送信し
ます。https:。/ / WWW cnblogsを.. COM / KE rmitj AM /記事/ 9692597 HTML
POST:
ターゲットアドレスへのユーザ情報の送信要求を実行する必要があり
HTTPS .. CNBはWWW // COM /ログインログインする
{
'ユーザー': 'タンク'、 '
' PWD ':' 123 '
}を

。3)応答ステータスコード
が2xx:成功
3xxの:リダイレクション
4xxの:リソースが見つからない
の5xx:サーバーエラー

4)リクエストヘッダの
ユーザエージェント:ユーザエージェント(コンピュータ機器やブラウザによって送られたの要求であることが証明された)
クッキー:実際のユーザーのログイン情報(ターゲット・ユーザネットワークを証明するために)
最初の訪問(証拠上のURL:リファラーあなたの目標は)上のサイトからジャンプすることである

5)身体の要求
POSTリクエストボディが要求されます
データフォーム
{
「戦車」、「:「ユーザー」
」PWD「:」123 'に
}

フォーは、IMDBのクロール

:現在の位置から開始します
; *すべてを探す

?:最初の見ていないを見つける

?。* *:非貪欲試合:貪欲試合

:カッコ内のデータを抽出(。*?)

の映画ランキング、映画のURL、フィルム名、ディレクター-主演-タイプ、映画のスコアはレビューの数、フィルムの概要<DIV CLASS = "項目">。*?<EMクラス= "">(。*?)</ EM>

。*?<a href="(.*?)"> 。?(。?*)* <スパンクラス= "タイトル"> </ span>の

*ディレクター:。?(。*?) </ P> * <スパンクラス= "rating_ NUM" *。?>(。? 。?。?。?。? 。?*)</ span>の*の<span>(*) の人々 </ span>の* <スパンクラス= "INQ">(*)</ span>のコメント



要求:

インポートは、#を要求インポート要求ライブラリ要求
対応するオブジェクト取得するホームへ#Baiduの送信要求、
応答= requests.get(URL = 'HTTPS://www.baidu.com/')
。#セットを8文字エンコーディングUTFの
response.encoding = 'UTF-8'
を印刷応答テキストの
印刷(response.text)
書かれたローカル応答テキスト
オープンで( 'baidu.html'、 'W'、エンコード= 'UTF-8')F AS:
f.write(response.text)


小さなクロール動画:
'' ' 
梨ビデオ
' ''


要求の#import
#video_url = 'https://www.pearvideo.com/video_1570107'
#response = requests.get(URL = video_url)
#Print(response.text)

ビデオソースアドレスに#を送信要求
#response = requests.get(「https://video.pearvideo.com/mp4/adshort/20190625/cont-1570107-14054821_adpkg-ad_hd.mp4」)
などの写真、ビデオ、などのバイナリストリーム印刷#
#printを(応答.content)
ローカルに格納された映像
F AS) 'WB'、 'ビデオ1.mp4'(オープン#with:
#1 f.write(response.content)


'' '
1、ビデオホーム梨に第1の送信要求。
HTTPS:/ /www.pearvideo.com/
ビデオのすべてを解決する上でID述べ得る
video_1570302
re.findall()
動画の詳細ページのURLを取得するために2、
スリリングを!徒歩で、地下鉄のスライドに奪われ男は中に入った
のhttps:// WWW。
パズルQanats
https://www.pearvideo.com/video_1570107
「」「

のインポートが要求し
たテキストデータの解析のために、インポートのRe#の定期を
ビデオホームピアーズに#1、第1の送信要求を
HTTPS =応答requests.get(」://をwww.pearvideo.com/ ')
プリント(response.text)は、

通常のビデオマッチングアクセサリーIDの#re
:定期的なマッチングルール#パラメータ1
#2のパラメータを:テキスト解析
、パターンマッチング:#3パラメータ
res_list = re.findall(' <Aを= HREF "(。*?)ビデオ_" 'response.text、re.S)
印刷(res_list)

各動画の詳細ページのURLステッチ#
res_listでv_idのために:
detail_url =' https://www.pearvideo.com/ _ビデオ「+ v_id
#印刷(detail_url)

は、ビデオソース動画のURLの前に、ビデオの各ページのリクエストを送信
レスポンス= requests.get(URL = detail_url)
#Print(response.text)

のパースと動画の詳細ページのURLを抽出
#ビデオをURL
= re.findall video_url( 'srcUrl = "(。*?)"'、response.text、re.S)[0]
印刷(video_url)

ビデオ名
VIDEO_NAME = re.findall(「<H1クラス =「ビデオ- TT「>(。*?)</>」のH1、response.text、re.S)[0]
印刷(VIDEO_NAME)

バイナリのビデオストリームを取得するには#のURL映像送信要求
v_response = requests.get(video_url)を
オープンして( F AS 's.mp4の%' %のVIDEO_NAME、 'WB'):
f.write(v_response.content)
印刷(VIDEO_NAME、 'ビデオは完全に忍び寄る')




クレソンクロール:
「」「
1を、要求送信
2、解析データ
3、ローカル維持する
「」」

インポート要求
インポート再
#クローラートリロジー
、#1要求送信
:DEF get_page(BASE_URL)
応答= requests.get(BASE_URL)
リターン応答

#2 、テキスト55解析
:DEFのparse__index(テキスト)
。?。?。?RES = re.findall(「<DIV CLASS = "項目"> * <EMクラス= "">(*)</ EM> * <HREFを= "(。*?)"> * <スパンクラス= "タイトル"> </ span>の(*。?)。?

*ディレクター:。?(。*?) 。?</ P> * <スパンクラス= "rating_ NUM"。*?> (。*?)</ span>を。*?<スパン>(。*?) の人がコメント</ span>を。*?<スパンクラス= "INQ">(。*?) </スパン> ')
#print(RES)
リターンRES

#3、保存数据
DEF save_data(データ):
オープン( 'douban.txt'と、 ''、エンコーディング= F 'としてUTF-8'):
f.write(データ)

#メイン+ ENTER
のif_nameを== _ '_ main_'
#10 NUM =
#= f'https BASE_URL :? //movie.douban.com/top250} {スタート=&フィルタ=」、蟻酸(NUM0
NUM = 0
の範囲内のラインについて(10):
BASE_URL = f'https :? //movie.douban.com/top250 NUM} {スタート=&フィルタ= '
NUM = + 25
プリント(BASE_URL)

。#1、送信要求、発呼機能
応答= get_page(BASE_URL)
2、テキスト解析
movie_list = parse_index(response.text)
データ保存、#3
#データフォーマット
movie_listで映画のために:
#Print(映画)

#エキスを割り当て
、映画のURL、#映画ランキング映画名、ディレクター-主演-タイプフィルム部門、評価者の数、フィルムあらすじ
v_top、v_url、v_name、v_daoyan、 v_point、v_num、v_desc =ムービー
映画= #v_top [0]
#v_urlムービー= [1]
movie_content = F
'' '
順位:V_TOP {}
...
' ''
プリント(movie_content)
データ保存#
save_data(movie_content)
 

おすすめ

転載: www.cnblogs.com/123456wyf/p/11093904.html