python - 使用Scrapy从图片中抓取网址

标签 python python-3.x if-statement xpath scrapy

我正在尝试从this website抓取图像的链接

出现在页面早期的图像的URL为

<img src="//sc01.alicdn.com/kf/HTB1jvmMXmtYBeNjSspkq6zU8VXa3/Closed-Cell-Expanded-Perlite-Bulk-Expanded-Perlite.jpg_300x300.jpg" alt="Closed Cell Expanded Perlite Bulk Expanded Perlite Price" />


稍后出现的图像的网址为,

<img src="//img.alicdn.com/tfs/TB1S_7kkY5YBuNjSspoXXbeNFXa-700-700.jpg_350x350.jpg" data-src="//sc01.alicdn.com/kf/HTB1IXB5abwTMeJjSszfq6xbtFXaQ/Expanded-Perlite-for-Agriculture.jpg_300x300.jpg" alt="Expanded Perlite for Agriculture" />


在第二种情况下,src包含指向通用图像的链接,该链接显示在页面的实际图像加载之前,而data_src是要删除的实际URL。

因此,我尝试使用这段代码使用三元表达式(如果没有)来抓取网址。

我的密码

import scrapy

class AlibabaSpider(scrapy.Spider):
    name = 'alibaba'
    allowed_domains = ['alibaba.com']
    start_urls = ['https://www.alibaba.com/catalog/agricultural-growing-media_cid144?page=1']

def parse(self, response):
    url = '//img.alicdn.com/tfs/TB1S_7kkY5YBuNjSspoXXbeNFXa-700-700.jpg_350x350.jpg'
    for products in response.xpath('//div[contains(@class, "m-gallery-product-item-wrap")]'):
        img_url_datasrc = products.xpath('.//div[@class="offer-image-box"]/img/@data-src').extract_first()
        img_url_src = products.xpath('.//div[@class="offer-image-box"]/img/@src').extract_first()
        item = {
        'product_name': products.xpath('.//h2/a/@title').extract_first(),
        'image_url': img_url_datasrc if img_url_src == url else img_url_src, #This is problem
        }
        yield item


结果不是我想要的那种。

编辑

查询结果:

img_url_datasrc if img_url_src == url else img_url_src


enter image description here

最佳答案

'image_url': img_url_datasrc if img_url_src == url else img_url_datasrc, #This is problem


这确实是问题,在两种情况下都将图像URL设置为img_url_datasrc
您可能想要:

'image_url': img_url_datasrc if img_url_src == url else img_url_src,

关于python - 使用Scrapy从图片中抓取网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52325790/

相关文章:

JavaScript 三元 if 语句

Python:响应命令行提示

Python:元素不是可点击的 Selenium

python - PyQt 子类化

python - 自动使用在单独模块中定义的 pytest 装置

python - 用较低的拉丁字母生成大随机字符串的最快方法

SELECT子句中的Mysql IF语句?

java - If,Else 语句跳过第二个条件

python - Paramiko,sftp 无法从 linux 服务器下载到 windows

python - 在python中创建图像表