ベースのインクリメンタルクローラフレームScrapy

 

アウトライン

コンセプト:モニタリング

コア技術:重複排除

  • Redisの重複除外に基づきます

使用インクリメンタルサイトに適して:

  • 深さに基づくクロール
    • クロールページのURLを記録するために(記録用紙)
  • 非クロールの深さに基づいて、
    • レコードテーブル:データに対応した指紋データによるクロール
      • 元のデータの一意の識別のセット:指紋データ
      • データ - >データの指紋 - >データベースクエリ
      • hashlib

どのようにテーブルのいわゆるレコードは何の形で存在しているのですか?

  • セットテーブルのレコードとしてRedisの行為

4567映画のネットワーク名とサイトは、データの増加をクロール更新されたフィルム、を紹介してクロール。

  • 住所:https://www.4567tv.tv/frim/index1.html
  • この実施形態は、クロールの深さに基づいています。

scrapy startproject zlsPro

scrapy genspider zls www.xxx.com

  • マニュアル奥行きパラメータの受渡しクロール
  • 使用self.conn.sadd('movie_url', detail_url)かクロール膜を介して決定するために、戻り値。
1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#zls.py 
# - * -コーディング:UTF-8 - * -
インポート scrapy
から zlsPro.items インポート ZlsproItemを
からのRedis インポート Redisの


クラス ZlsSpider (scrapy.Spiderを)
NAME = 'ZLS' #1 allowed_domains = [ 'www.xxx。 COM '] start_urls = [ 'https://www.4567tv.tv/frim/index1.html' ] CONN = Redisの('127.0.0.1' 6379DEF 構文解析(自己、応答) li_list = response.xpath('/ HTML /本体/ DIV [1] / DIV / DIV / DIV / DIV [2] / UL /リチウム'のLi






li_list:
= li.xpathタイトル('./div/div/h4/a/text()').extract_first()
detail_url = 'https://www.4567tv.tv' + li.xpath(」./ DIV / DIV / H4 / A / HREF @ ').extract_first()
RET = self.conn.sadd(' movie_url "、detail_url)IF RET:成功裏に存在しない場合は、URLに書かれた#、その後の動作は、その後かもしれ: パフォーマーli.xpath =('./div/div/p/text()').extract_first() 項目= ZlsproItem() 項目[ '表題' ] =タイトル 項目[ '演奏' ] =演奏収率






scrapy.Request(detail_url、コールバック= self.parse_detail、メタ= { 'アイテム':アイテム}) プリント('暂无更新的数据'DEF parse_detail (自己、応答) アイテム= response.meta [ 「アイテム' ] コンテンツ= response.xpath('//のdiv [@クラス= "のStuI-content__detail"] / P /スパン[クラス@ = "詳細内容"] /テキスト()').extract_first() 項目[ 'コンテンツ' ] =コンテンツ収率アイテム








  • 項目の定義
1 
2
3
4
5
6
7
8
#のitems.py 
輸入 scrapyの

クラス ZlsproItem (scrapy.Item) :のようにここにあなたの商品のためのフィールドを定義します: タイトル= scrapy.Field() パフォーマー= scrapy.Field() コンテンツ= scrapy.Field()



  • パイプラインの定義
  • 着信のRedis
1 
2
3
4
5
6
7
8
9
10
# pipelines.py
class ZlsproPipeline(object):

def process_item(self, item, spider):
title = item['title']
performer = item['performer']
content = item['content']
conn = spider.conn
conn.lpush('movie', item)
return item

おすすめ

転載: www.cnblogs.com/taosiyu/p/11735124.html