python - 抓取图片链接的问题

标签 python css image scrapy web-crawler

我搭建了一个爬虫来爬取 www.ebay-kleinanzeigen.de 上的信息,但是除了给定的标题、价格、描述和链接之外,我没有得到提供的房子图片的链接。

我已经尝试使用不同的属性,如 attr(href)、attr(src)、attr(data-imgsrc)...但似乎没有任何效果。我只得到了div容器,我连这个div容器的内容都无法分割。

导入...

[...]

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

对于变量“image”,我希望获得 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,马库斯

最佳答案

图像的链接位于您选择的 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']

关于python - 抓取图片链接的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58792056/

相关文章:

android - FFMPEG:创建幻灯片时在视频中定位图像

python - 如何将 python 中的 stdout 指针移动到上一行?

javascript - 在另一个上下文中设置变量

python - 如何更改 view.py 中 django-tables2 表的列标题?

jquery - 如何使用 jQuery 让我的 6 张图片向外展开?

html - 将按钮移动到 div 底部后按钮不居中

jquery - 悬停不显示在 css 中的 DIV 上

linux - 构建图像时 "COPY ./src"是什么

python - Django 按 id 分组然后选择最大时间戳

python - Snakemake如何忽略RuntimeWarning?