私はpython scrapyでスクリプトを書いて、craigslistから別のカテゴリを解析しました。スクリプトを実行している奇妙なことに気づいた。それは完璧に実行され、苦情に何も残さない。しかし、問題は次のようにitems.py
を空白のままにしておくと、クロールプロセスに影響がないことです。私の質問は私の治療プロジェクトで何をやっているのですか?前もって感謝します。奇妙な行動をするクローラ
"Items.py" ファイルが含まれています:
import scrapy
class CraigItem(scrapy.Item):
pass
クモが含まれています
import scrapy
from scrapy import Request
class JobsSpider(scrapy.Spider):
name = "category"
allowed_domains = ["craigslist.org"]
start_urls = ["https://newyork.craigslist.org/search/egr"]
def parse(self, response):
jobs = response.xpath('//p[@class="result-info"]')
for job in jobs:
relative_url = job.xpath('a/@href').extract_first()
absolute_url = response.urljoin(relative_url)
title = job.xpath('a/text()').extract_first()
address = job.xpath('span[@class="result-meta"]/span[@class="result-hood"]/text()').extract_first("")[2:-1]
yield Request(absolute_url, callback=self.parse_page, meta={'URL': absolute_url, 'Title': title, 'Address':address})
relative_next_url = response.xpath('//a[@class="button next"]/@href').extract_first()
absolute_next_url = "https://newyork.craigslist.org" + relative_next_url
yield Request(absolute_next_url, callback=self.parse)
def parse_page(self, response):
url = response.meta.get('URL')
title = response.meta.get('Title')
address = response.meta.get('Address')
compensation = response.xpath('//p[@class="attrgroup"]/span[1]/b/text()').extract_first()
employment_type = response.xpath('//p[@class="attrgroup"]/span[2]/b/text()').extract_first()
yield{'URL': url, 'Title': title, 'Address':address, 'Compensation':compensation, 'Employment_Type':employment_type}
を再び私の質問は次のとおりです。items.py
ファイルはクロール・プロセス内の任意の監督を持っていませんか?そうなら、どうですか?
ありがとう、TomášLinhart、あなたの答えです。実際、私は 'items.py'を治療プロジェクトから蹴り出して、再び走った。私はそれがまだ動作していることが分かったつまり、Scrapyでは使用されていません。 – SIM
@Toptoもちろん、それはちょうど(ほとんど)空白のモジュールで、どこにもインポートされていません。 –
ここに私が確信しておきたかったことがあります。膨大な数のTomášLinhartに感謝します。あなたは私の一日を作った。 – SIM