0
  1. 我正在尝试使用“scrapy”包从网站(IMDB)中获取一些带有图像的数据。

  2. 如果 div 类中有 image_URL,那么我可以使用电影海报抓取数据。但是,如果没有,我的代码将无法正常工作。它跳过了一些与图像相关的数据。

  3. 我想像没有 image_URL 一样修复它,然后忘记图像,只抓取数据。

  4. 除了部分,我该如何修复?

def 解析(自我,响应):

//some other lines

try:
        poster_image_url = 
        response.xpath('//div[@class="poster"]/a/img/@src').extract()[0]
        poster_image_url = [ poster_image_url.split("_V1_")[0] + "_V1_.jpg" ]

except:
        poster_image_url = None
        item['image_urls'] = poster_image_url

这是管道代码↓↓↓↓

类 ImdbPipeline(对象):

def process_item(self, item, spider):
    return item

def get_media_requests(self, item, info):
    for image_url in item['image_urls']:
        yield scrapy.Request(image_url)
4

1 回答 1

0

您可以使用extract_first()if 检查:

poster_image_url = response.xpath('//div[@class="poster"]/a/img/@src').extract_first()
if poster_image_url:
    item['image_urls'] = poster_image_url.split('_V1')[0] + '_V1_.jgp'

或者,您可以使用 scrapy ItemLoader 的.

于 2017-04-25T11:03:45.137 回答