Сортировка результатов по URL - PullRequest
0 голосов
/ 01 марта 2019

Я только начал использовать Scrapy для создания веб-страниц. У меня есть более 9000 URL для очистки.

Я уже пробовал, и это сработало, за исключением того, что я хотел бы выводить результаты в файлах json в соответствии сurl (если я удалил десять элементов из url1, я хотел бы, чтобы эти элементы были в объекте json с url1, то же самое для url2 и т. д.)

{"url1": "www.reddit.com/page1",
 "results1: {
   ["name": "blabla",
    "link": "blabla",
   ],
   ["name": "blabla",
    "link": "blabla",
   ],
   ["name": "blabla",
    "link": "blabla",
   ]
 },

 {"url2": "www.reddit.com/page2",
 "results2: {
   ["name": "blabla",
    "link": "blabla",
   ],
   ["name": "blabla",
    "link": "blabla",
   ],
   ["name": "blabla",
    "link": "blabla",
   ]
 }

Возможно ли это сделать или лучшеочистить весь сайт и затем отсортировать его после работы?

Мой код прямо сейчас:

import scrapy

class glenmarchSpider(scrapy.Spider):
    name = "glenmarch"

    def start_requests(self):
        start_urls = reversed([
            'https://www.glenmarch.com/cars/results?make=&model=&auction_house_id=&auction_location=&year_start=1913&year_end=1916&low_price=&high_price=&auction_id=&fromDate=&toDate=&keywords=AC+10+HP&show_unsold_cars=0&show_unsold_cars=1?limit=9999',
            'https://www.glenmarch.com/cars/results?make=&model=&auction_house_id=&auction_location=&year_start=1918&year_end=1928&low_price=&high_price=&auction_id=&fromDate=&toDate=&keywords=AC+12+HP&show_unsold_cars=0&show_unsold_cars=1?limit=9999'
        ])


        for url in start_urls:
        yield scrapy.Request(url, callback=self.parse)

    def parse(self, response):
        for caritem in response.css("div.car-item-border"):
            yield {
                "model": caritem.css("div.make::text").get(),
                "price": caritem.css("div.price::text").get(),
                "auction": caritem.css("div.auctionHouse::text").get(),
                "date": caritem.css("div.date::text").get(),
                "auction_url": caritem.css("div.view-auction a::attr(href)").get(),
                "img": caritem.css("img.img-responsive::attr(src)").get()
            }

1 Ответ

0 голосов
/ 02 марта 2019

Простое использование response.url не сработает?

yield {
    "url": response.url,
    # ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...