【问题标题】:Adding Scrapy request URL into Parsed Array将 Scrapy 请求 URL 添加到已解析的数组中
【发布时间】:2014-06-10 06:44:12
【问题描述】:

我正在使用以下功能齐全的 Scrapy 代码从网站上抓取数据。刮板输入产品 ID 的文本列表,这些产品 ID 在第 10 行生成到 URL。如何将当前 start_url 作为附加元素添加到我的项目数组中?

from scrapy.spider import Spider
from scrapy.selector import Selector
from site_scraper.items import SiteScraperItem

class MySpider(Spider):
    name = "product"
    allowed_domains = ["site.com"]
    url_list = open("productIDs.txt")
    base_url = "http://www.site.com/p/"
    start_urls = [base_url + url.strip() for url in url_list.readlines()]
    url_list.close()

def parse(self, response):
    hxs = Selector(response)
    titles = hxs.xpath("//span[@itemprop='name']")
    items = []
    item = SiteScraperItem()
    item ["Classification"] = titles.xpath("//div[@class='productSoldMessage']/text()").extract()[1:]
    item ["Price"] = titles.xpath("//span[@class='pReg']/text()").extract()
    item ["Name"] = titles.xpath("//span[@itemprop='name']/text()").extract()
    try:
        titles.xpath("//link[@itemprop='availability']/@href").extract()[0] == 'http://schema.org/InStock'
        item ["Availability"] = 'In Stock'
    except:
        item ["Availability"] = 'Out of Stock'
    if len(item ["Name"]) == 0:
        item ["OnlineStatus"] = 'Offline'
        item ["Availability"] = ''
    else:
        item ["OnlineStatus"] = 'Online'
    items.append(item)
    return items

我正在使用以下命令行代码将此数据导出为 CSV,并希望该 URL 成为我的 CSV 文件中的附加值。

scrapy crawl product -o items.csv -t csv

提前感谢您的帮助!

【问题讨论】:

    标签: python csv web-scraping scrapy


    【解决方案1】:

    将新的Field 添加到您的SiteScraperItem Item 类中,并在parse() 方法中将其设置为response.url

    【讨论】:

      猜你喜欢
      • 2013-12-03
      • 2019-08-01
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 2020-08-14
      相关资源
      最近更新 更多