【问题标题】:I cannot figure out how to use a csv file for a list comprehension in scrapinghub deployment我无法弄清楚如何在 scrapinghub 部署中使用 csv 文件进行列表理解
【发布时间】:2019-04-26 06:27:21
【问题描述】:

我正在尝试将蜘蛛部署到 scrapinghub,但无法弄清楚如何解决数据输入问题。我需要从 csv 中读取 ID,并将它们附加到我的起始 url,作为蜘蛛爬行的列表理解:

class exampleSpider(scrapy.Spider):
    name = "exampleSpider"

    #local scrapy method to extract data
    #PID = pd.read_csv('resources/PID_list.csv')

    #scrapinghub method
    csvdata = pkgutil.get_data("exampleSpider", "resources/PID_list.csv")


    start_urls = ['http://www.example.com/PID=' + str(x) for x in csvdata]

需求文件和 pkgutil.get_data 部分有效,但我坚持将数据 IO 转换为列表。将数据调用转换为列表推导的过程是什么?

编辑: 谢谢!这让我走了90%的路!

class exampleSpider(scrapy.Spider):
    name = "exampleSpider"

    #local scrapy method to extract data
    #PID = pd.read_csv('resources/PID_list.csv')

    #scrapinghub method
    csvdata = pkgutil.get_data("exampleSpider", "resources/PID_list.csv")
    csvio = StringIO(csvdata)
    raw = csv.reader(csvio)

    # TODO : update code to get exact value from raw 
    start_urls = ['http://www.example.com/PID=' + str(x[0]) for x in raw]

str(x) 需要 str(x[0]) 作为快速修复,因为循环在 url 编码中读取方括号,这会破坏链接: str(x) 导致“http://www.example.com/PID=%5B'0001'%5D” 但str(x[0]) 将其从列表括号中取出:“http://www.example.com/PID='0001'”

【问题讨论】:

  • PID_list.csv 长什么样子?你能包括几行吗?
  • 列表是一个 csv,看起来像:0001,0002,0003
  • 这看起来像一个逗号分隔列表(项目在同一行,用逗号分隔),而不是 CSV(行由换行符分隔,列由分隔符分隔,如逗号)。您能否确认该文件实际上是一个以命令分隔的 ID 列表?

标签: python scrapy scrapinghub


【解决方案1】:
class exampleSpider(scrapy.Spider):
    name = "exampleSpider"

    #local scrapy method to extract data
    #PID = pd.read_csv('resources/PID_list.csv')

    #scrapinghub method
    csvdata = pkgutil.get_data("exampleSpider", "resources/PID_list.csv")
    csvio = StringIO(csvdata)
    raw = csv.reader(csvio)

    # TODO : update code to get exact value from raw 
    start_urls = ['http://www.example.com/PID=' + str(x) for x in raw]

您可以使用 StringIO 通过 read() 方法将字符串转换为 csv.reader 应该能够处理的内容。我希望这会对你有所帮助:)

【讨论】:

    猜你喜欢
    • 2016-05-10
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多