0
據我所知Scrapy
異步工作,請求無序。
現在,我可以解析某個網站頁面上的項目列表,並詳細解析附加信息。
問題是,在完成所有這些工作之後,我需要爲另一個城市解析相同的數據。
通過提出請求http://www.example.com/city/set/1
來改變城市。用Scrapy解析網站時改變城市
我的蜘蛛看起來是這樣的:
class ExampleSpider(scrapy.Spider):
name = "example"
allowed_domains = ["example.com"]
def start_requests(self):
for category in CATEGORIES:
if 'subcategories' in category:
subcategories = category['subcategories']
for subcategory in subcategories:
url = subcategory['url']
yield scrapy.Request(
url = url,
callback = self.parse,
meta = {
'category': category,
'subcategory': subcategory
}
)
def parse(self, response):
pass
什麼是做到這一點的最好辦法?
我想你沒有正確地理解我的問題。對於每個城市都有不同的物品,因此我不需要攜帶物品。例如,調用'http:// www.example.com/city/set/1'爲會話保存城市ID。然後我需要解析該城市的所有項目,完成後我需要爲城市ID設置另一個值並再次解析項目。 –
@Chika哦,我明白了。如果會話在cookie中設置,那麼您可以簡單地創建多個會話,將每個城市url添加到'start_urls'並將'dont_filter = True'添加到您的請求中,例如'Requests(dont_filter = True)'以避免過濾。 – Granitosaurus