我生成的.csv文件包含不同的位置搜索页面。 即:Search page 1,Search page 2等
只有一个搜索页面,如果我想要请求网址,我会轻松查看Chrome Dev中的XHR Feed以找到它,然后只需要在关键字所在的位置替换变量字符串以获取不同关键字的请求网址在给定的位置页面内。我会知道" Store"号码和" carbuyYardCode"数字已经因为它只有一个位置。
这是我的蜘蛛代码,它的作用如下:
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').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)
yield item
我的.csv文件中所有搜索页面的请求网址都完全相同,主要的区别是"存储"号码和" carbuyYardCode" URL末尾附近的数字。最大的问题是:有没有办法以自动方式以某种方式为每个位置的请求URL获取这两组标识号,这样我就可以针对给定的关键字在所有这些标识符上执行我的蜘蛛。或者手动查看每个请求网址的Chrome Dev XHR Feed,找到从中提取这些数字的链接的唯一方法是什么?
非常感谢这个Scrapy的新东西, 丹尼尔