Проблемы со сканированием ссылки на изображение - PullRequest
0 голосов
/ 10 ноября 2019

Я создал сканер для сканирования информации на сайте www.ebay-kleinanzeigen.de, но, помимо указанного названия, цены, описания и ссылки, я не получаю ссылку на изображение предлагаемого дома.

Я уже пытался использовать разные атрибуты, такие как attr (href), attr (src), attr (data-imgsrc) ... но, похоже, ничего не работает. Я получаю только контейнер div и даже не могу разделить содержимое этого контейнера div.

import ...

[...]

start_urls = [
    "https://www.ebay-kleinanzeigen.de/s-haus-kaufen/anzeige:angebote/c208"
]

def parse(self, response):

    items = KleinanzeigenItem()

    jede_immobilie = response.css("li.ad-listitem.lazyload-item")

    for immobilie in jede_immobilie:

        title = immobilie.css("a.ellipsis::text").extract()
        preis = immobilie.css("aditem-main, strong::text").extract()
        quadratmeter = immobilie.css(".tag-small:nth-child(1)::text").extract()
        description = immobilie.css(".text-module-begin+ p::text").extract()
        image = immobilie.css("div.srpimagebox, img::attr(src)").extract()
        link_immobilie = immobilie.css("a.ellipsis").xpath("@href").extract()

        items["title"] = title
        items["preis"] = preis
        items["quadratmeter"] = quadratmeter
        items["description"] = description
        items["image"] = image
        items["link_immobilie"] = "https://www.ebay-kleinanzeigen.de"+link_immobilie[0]

        yield items

Для переменной "изображение" я ожидаю получить ссылку на jpg, но я получаю следующие результаты:

{[...]
 'image': ['<div class="imagebox srpimagebox" '
           'data-href="/s-anzeige/einfamilienhaus-freistehend-in-zentraler-lage/1252437848-208-7416" '
           'data-imgsrc="https://i.ebayimg.com/00/s/MTIwMFgxNjAw/z/CBYAAOSwWI1dyD6R/$_2.JPG" '
           'data-imgsrcretina="https://i.ebayimg.com/00/s/MTIwMFgxNjAw/z/CBYAAOSwWI1dyD6R/$_35.JPG '
           '2x" data-imgtitle="Einfamilienhaus freistehend in zentraler Lage '
           'Bayern - Großostheim Vorschau">\n'
           '                                    </div>'],
 [...]}

Так что я не уверен, как это исправить, потому что div-контейнерслишком много информации для меня. И это так странно, что я не могу манипулировать этой строкой / списком.

Например, я попытался получить элемент [0] этого списка, а затем попытался использовать разбиение, но это не сработало.

Я ценю ваши отзывы! :)

KR, Маркус

1 Ответ

0 голосов
/ 10 ноября 2019

Ссылка на изображение лежит в двух атрибутах выбранного вами элемента div. А именно - @ data-imgsrcretina и @ data-imgsrc. Итак, почему бы вам не выбрать его оттуда.

Например, следующий xpath работает для меня.

>> image = immobilie.css("div.srpimagebox").xpath("@data-imgsrc").extract()
>> image = immobilie.css("div.srpimagebox").xpath("@data-imgsrcretina").extract() 
# take either of the above.

Вывод -

>> image
 [u'https://i.ebayimg.com/00/s/MTAyNFg3Njg=/z/IDUAAOSwimZdcQuw/$_2.JPG']
...