Не получить все элементы из класса div с помощью xpath и Scrapy - PullRequest
0 голосов
/ 07 июля 2019

Я пытался получить все свойства с этого сайта. Когда я получаю доступ ко всем из них на главной странице поиска, я могу получить всю информацию из всех свойств, однако, когда мне нужна информация из реальной ссылки свойства, кажется, что она проходит только по одной ссылке свойства.

Основная проблема заключается в части ссылки, поэтому, когда я на самом деле пытаюсь получить доступ к ссылке свойства. Я получаю ссылку и информацию только от первого свойства, но не от всех остальных.

class PropDataSpider(scrapy.Spider):
    name = "remax"
    start_urls = ['https://www.remax.co.za/property_search/for-sale/?minprice=100000&maxprice=1000000000&displayorder=date&cities=432']


    def parse(self, response):

        propertes = response.xpath("//div[@class='w-container main-content remodal-bg']")
        for prop in propertes:
            link = 'http://www.remax.co.za/' + prop.xpath("./a/@href").extract_first()
            agency = self.name
            title = prop.xpath(
                ".//div[@class='property-item']/div[@class='w-clearfix']/p[@class='property-type']/text()").extract_first().strip()
            price = prop.xpath(
                 ".//div[@class='property-item']/div[@class='w-clearfix']/div/strong/text()").extract_first().strip()

...


           yield scrapy.Request(
                link,
                callback=self.parse_property,
                meta={
                    'agency': agency,
                    'title': title,
                    'price': price,
                    'description': description,
                    'bedrooms': bedrooms,
                    'bathrooms': bathrooms,
                    'garages': garages,
                }
            )


 def parse_property(self, response):
        agency = response.meta["agency"]
        title = response.meta["title"]
        price = response.meta["price"]
        description = response.meta["description"]
        bedrooms = response.meta["bedrooms"]
        bathrooms = response.meta["bathrooms"]
        garages = response.meta["garages"]


        yield {'agency': agency, 'title': title, 'price': price, "description": description, 'bedrooms': bedrooms,'bathrooms': bathrooms, 'garages': garages}

Я хотел бы получить все остальные ссылки на свойства. Я не уверен, что я делаю неправильно и как это исправить.

Большое спасибо за помощь!

1 Ответ

0 голосов
/ 07 июля 2019

Вам нужно пару изменений:

properties = response.xpath("//div[@class='w-container main-content remodal-bg']/a")
for prop in properties:
    link = 'http://www.remax.co.za/' + prop.xpath("./@href").extract_first()
...