ケースをクロールscrapy 58都市の仕事のPythonのフレームワーク

まず、プロジェクトのディレクトリ構造:

コードは以下の通りであります:

- * -コーディング:UTF-8 - * - 

あなたの掻き取りのアイテムはこちらモデルを定義
#の
#はでドキュメントを参照してください:https://doc.scrapy.org/en/latest/topics/items.html 

輸入scrapyの


クラスJob58CityItem(scrapy.Item):
    は、のようなここにあなたの項目のためのフィールドを定義します
    。#名= scrapy.Field() 
    JOB_NAME = scrapy.Field()
    お金 = scrapy.Field()
    job_wel = scrapy.Field()
    会社 = scrapy。フィールド()
    position_type = scrapy.Field()
    xueli =scrapy.Field()
    jingyan = scrapy.Field()
    アドレス = scrapy.Field()
 
- * -コーディング:UTF-8 - - * 
輸入scrapy
 から ..itemsはインポートJob58CityItemの


クラス:JobsSpider(scrapy.Spider) = ' 仕事' 
    allowed_domains = [ ' 58.com ' ]
     配置起始页URLは 
    =オフセットを1 
    URL = " https://cd.58.com/job/pn{0}/ " 
    start_urlsの = [url.format(STR(オフセット))] 

    解析HTML内容
    DEF (自己、応答)を解析:
         のために、各 response.xpath(" // UL /李[ID = 'list_con' @] " ):
            項目 = Job58CityItem()
            アイテム[ ' JOB_NAME ' ] = each.xpath(" .//スパン[クラス@ = '名前'] /テキスト()" ).extract()[0] 
            money_list = each.xpath(" .// P [クラス@ = 'job_salary'] /テキスト()" ).extract()
            お金 = " 未知" 
            場合(money_list)でlen> 0 :
                お金 = money_list [0] 
            の項目[ ' お金'] =お金
            スパン = each.xpath(" .//div[@class='job_welのclearfix '] /スパン" 
            項目[ ' job_wel ' ] = []
             のための I におけるスパン:
                項目[ ' job_wel ' ] .append(i.xpath (" ./text()" ).extract()[0])
            のアイテム[ ' 会社' ] = each.xpath(" .//のdiv [@クラス= 'COMP_NAME'] / A /テキスト()" )。抽出()[0] 
            アイテム[ ' position_type '] = each.xpath(" .//スパン[クラス@ = 'ケイト'] /テキスト()" ).extract()[0] 
            アイテム[ ' xueli ' ] = each.xpath(" .//span[@class='xueli '] /テキスト()" ).extract()[0] 
            アイテム[ ' jingyan ' ] = each.xpath(" .//スパン[@クラス= 'jingyan'] /テキスト()" ).extract()[0] 
            項目[ ' アドレス' ] = each.xpath(" //スパン[@クラス= 'アドレス'] /テキスト()" ).extract()[0]
             降伏アイテム
         であれば、自己。<100オフセット:
            self.offset+ = 1つの
         収率 scrapy.Request(" https://cd.58.com/job/pn{0}/ " .format(STR(self.offset))、コールバック= self.parse)
scrapyの輸入CMDLINE 

場合 __name__ == ' __main__ ' 
    cmdline.execute(" scrapyのクロールジョブ" .split())

 データ:

 

おすすめ

転載: www.cnblogs.com/yang-2018/p/10966941.html