刮擦蜘蛛Xpath图像网址



我有一个抓取蜘蛛,它接收所需关键字的输入,然后产生搜索结果URL。然后,它会抓取该 URL,以抓取"item"中有关每辆车结果的所需值。我正在尝试在我的生成项目中添加每个全尺寸汽车图像链接的 URL,该链接在车辆结果列表中伴随每辆车。

当我输入关键字为"本田"时,正在抓取的特定网址如下:本田搜索结果示例

我一直无法弄清楚编写 xpath 的正确方法,然后将我获得的任何图像 url 列表包含在我在代码的最后一部分生成的蜘蛛"项目"中。现在,当 Items 保存到一个.csv文件中时,下面的 lkq.py 蜘蛛正在使用命令"scrapy crawl lkq -o items.csv -t csv"运行,Picture 的项目.csv文件的列只是全零而不是图像 url。

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import scrapy
from scrapy.shell import inspect_response
from scrapy.utils.response import open_in_browser
keyword = raw_input('Keyword: ')
url =     'http://www.lkqpickyourpart.com/DesktopModules/pyp_vehicleInventory/getVehicleInventory.aspx?store=224&page=0&filter=%s&sp=&cl=&carbuyYardCode=1224&pageSize=1000&language=en-US' % (keyword,)
class Cars(scrapy.Item):
Make = scrapy.Field()
Model = scrapy.Field()
Year = scrapy.Field()
Entered_Yard = scrapy.Field()
Section = scrapy.Field()
Color = scrapy.Field()
Picture = scrapy.Field()

class LkqSpider(scrapy.Spider):
name = "lkq"
allowed_domains = ["lkqpickyourpart.com"]
start_urls = (
    url,
)
def parse(self, response):
    picture = response.xpath(
        '//href=/text()').extract()
    section_color = response.xpath(
        '//div[@class="pypvi_notes"]/p/text()').extract()
    info = response.xpath('//td["pypvi_make"]/text()').extract()
    for element in range(0, len(info), 4):
        item = Cars()
        item["Make"] = info[element]
        item["Model"] = info[element + 1]
        item["Year"] = info[element + 2]
        item["Entered_Yard"] = info[element + 3]
        item["Section"] = section_color.pop(
            0).replace("Section:", "").strip()
        item["Color"] = section_color.pop(0).replace("Color:",   "").strip()
        item["Picture"] = picture.pop(0).strip()
        yield item

我真的不明白你为什么使用像'//href=/text()'这样的xpath,我建议先阅读一些xpath教程,这是一个非常好的教程。

如果你想得到所有的图像网址,我认为这就是你想要的

pictures = response.xpath('//img/@src').extract()

现在picture.pop(0).strip()只会得到最后一个网址并strip它,请记住,.extract()返回一个列表,所以pictures现在包含所有图像链接,只需在那里选择你需要的。

最新更新