当运行编码时,它给我的项目价格,但项目名称是相同的。这意味着它先给transcription_price: 245
,然后给transcription_price: 240
。应该有caption_price
和transcription_price
。为什么以及如何解决这个问题?
import scrapy
from .. items import FetchingItem
import re
class SiteFetching(scrapy.Spider):
name = 'Site'
start_urls = ['https://www.rev.com/freelancers/transcription',
'https://www.rev.com/freelancers/captions']
def parse(self, response):
items = FetchingItem()
Transcription_price = response.css('#middle-benefit .mt1::text').extract()
items['Transcription_price'] = Transcription_price
def next_parse(self, response):
other_items = FetchingItem()
Caption_price = response.css('#middle-benefit .mt1::text').extract()
other_items['Caption_price'] = Caption_price
yield other_items
yield items
发布于 2019-05-08 18:00:30
您的代码永远不会到达方法self.next_parse
。默认情况下,Scrapy对self.start_urls
中的每个URL调用回调self.parse
。您可以通过重写方法start_requests
来使用自定义回调。
下面是你如何做到这一点:
import scrapy
from .. items import FetchingItem
import re
class SiteFetching(scrapy.Spider):
name = 'Site'
def start_requests(self):
return [
scrapy.Request('https://www.rev.com/freelancers/transcription', callback=self.parse_transcription),
scrapy.Request('https://www.rev.com/freelancers/captions', callback=self.parse_caption)
]
def parse_transcription(self, response):
items = FetchingItem()
Transcription_price = response.css('#middle-benefit .mt1::text').extract()
items['Transcription_price'] = Transcription_price
yield items
def parse_caption(self, response):
other_items = FetchingItem()
Caption_price = response.css('#middle-benefit .mt1::text').extract()
other_items['Caption_price'] = Caption_price
yield other_items
有关详细信息,请参阅Spider documentation。
https://stackoverflow.com/questions/56044280
复制