【发布时间】:2020-04-17 19:08:39
【问题描述】:
这是我将使用的代码(我正在使用 scrapy)
def start_requests(self):
start_urls = ['https://www.lowes.com/search?searchTerm=8654RM-42']
这是我存储所有网址的地方
这是我尝试仅在“=”之后打印所有内容的方式
productSKU = response.url.split("=")[-1]
item["productSKU"] = productSKU
这是输出:
{'productPrice': '1,449.95',
'productSKU': 'https://www.lowes.com/pd/ZLINE-KITCHEN-BATH-Ducted-Red-Matte-Wall-Mounted-Range-Hood-Common-42-Inch-Actual-42-in/1001440644'}
那么问题来了:
我输入的 URL 最终将被填充为
https://www.lowes.com/search?searchTerm = {something}
这就是为什么我想使用 {something} 来确保我将尝试在 CSV 上抓取的每个项目(用于排序和匹配目的)。
我使用的 URL 将这个 URL 重定向到我:
(输入)https://www.lowes.com/search?searchTerm=8654RM-42
->
因此,我的 productSKU 输出是整个重定向 URL,而不是 '=' 符号之后的任何内容。我想要的输出是 8654RM-42。
这是我的整个程序
# -*- coding: utf-8 -*-
import scrapy
from ..items import LowesspiderItem
from scrapy.http import Request
class LowesSpider(scrapy.Spider):
name = 'lowes'
def start_requests(self):
start_urls = ['https://www.lowes.com/search?searchTerm=8654RM-42']
for url in start_urls:
yield Request(url, cookies={'sn':'2333'}) #Added cookie to bypass location req
def parse(self, response):
items = response.css('.grid-container')
for product in items:
item = LowesspiderItem()
#get product price
productPrice = product.css('.art-pd-price::text').get()
productSKU = response.url.split("=")[-1]
item["productSKU"] = productSKU
item["productPrice"] = productPrice
yield item
【问题讨论】:
-
拥有完整的代码有助于提出一个好的解决方案。不能直接提取
start_requests中的产品skus吗? -
@QuantumLicht 对不起!我马上更新我的程序。
标签: python string scrapy request