-インクリメンタル
-コンセプト:更新されたデータのためのサイトを監視します。
-コアメカニズム:重複排除。Redisのは、重複排除を達成するために設定されている
: -抗クライミングメカニズムまとめ
ロボット-
- UAが偽装
-コード
-エージェント
-クッキー
-動的変更リクエストパラメータ
- jsの暗号化を
混乱JS -
-画像の遅延ロード
-動的なデータをキャプチャ
- seleium:EVADE検出を
プロジェクト名scrapyのstartprojectの作成1.
2、ワームを作成するクロールZJS www.xxx.com -t genspider scrapy
3、プロファイルUA迷彩、ログレベル、ロボット
4、映画名の内部解決のバグは、ページのURL、説明の詳細
内部5、アイテムを構成
6、昆虫アイテムを導入
。7、入力データがパイプパイプラインの内側に配置されている
8、オープンプロファイル管
9は、昆虫の実装はZJS Scrapyクロール
のRedis-cli.exe:10は、Redisのクライアントを起動する
すべてのキーを照会する:キー*
クエリの長さ: llen moiveData
クエリデータ:smembers movie_detail_urls
空:flushall
zjs.py
# - * -コーディング:UTF-8 - * -
インポートscrapy
scrapy.linkextractorsからLinkExtractorをインポート
CrawlSpiderをインポートscrapy.spidersから、ルール
のRedisからはRedisのインポート
zjsPro1.itemsインポートZjspro1Itemから
クラスZjsSpider(CrawlSpider):
CONN = Redisの(ホスト= '127.0.0.1'、ポート= 6379)
NAME = 'zjs'
#allowed_domains = [ 'www.xxx.com']
start_urls = [ 'https://www.4567tv.tv/index.php/vod/show/class /%E7%88%B1%E6%83%85/id/1.html ']
ルール=(
規則(LinkExtractor(許可= R' /ページ/ \ D + \。HTML ')、コールバック=' parse_item」、フォロー= False)が、
)
デフparse_item(自己、応答):
#解析电影名称和详情页URL:
= response.xpath li_list( '/ HTML /本体/ DIV / DIV / DIV / DIV / DIV [2] / UL /リー[1]')
のLiためli_listで:
名= li.xpath(」./ DIV / A /タイトル@ ')。extract_first()
detail_url =' https://www.4567kan.com/ '+ li.xpath(' ./ DIV / A / @ HREF「)。extract_first()
項目= Zjspro1Item()
項目[ '名前は']名前は=
最高記録の映画の詳細ページ登ることができるURLの#
#exは== 0:挿入データに成功:データ挿入は、ex == 1失敗した
元= self.conn.sadd( "movie_detail_urls"、 detail_urlを)
IF == EX 1:
印刷( '最新の更新プログラムは、データをキャプチャ!')
収量scrapy.Request(detail_url、コールバック= self.parse_detail、メタ= { '項目':項目})
他:
印刷(「いいえデータの更新!!!」)
:DEF(自己、応答)parse_detail
#解析描述
DESC = response.xpath( '/ HTML /本体/ DIV [1] / DIV / DIV / DIV / DIV [2] / P [5] /スパン[3] /テキスト() ')。extract_first()
項目= response.meta ['アイテム']
項目[' DESC '] = DESCの
収率項目