【问题标题】:Using a Loop to enter values in "start_urls" function to input values from a csv使用循环在“start_urls”函数中输入值以从 csv 输入值
【发布时间】:2015-04-01 03:30:23
【问题描述】:

我基本上有一个要在网站上搜索的标题列表,这些标题存储在 csv.

我正在提取这些值,然后尝试将它们添加到 start_urls 函数中的搜索链接。

但是,当我运行脚本时,它只取列表的最后一个值。 发生这种情况有什么特别的原因吗?

class MySpider(CrawlSpider):
      name = "test"
      allowed_domains = ["example.com"]
      import pandas as pd
      df = pd.read_csv('test.csv')
      saved_column = df.ProductName
      for a in saved_column:
        start_urls = ["http://www.example.com/search?noOfResults=20&keyword="+str(a)"]

      def parse(self,response):

【问题讨论】:

    标签: python python-2.7 csv scrapy


    【解决方案1】:

    您的代码中存在概念错误。您正在制作循环,但除了旋转网址之外没有任何其他操作。因此使用循环的最后一个值调用 parse 函数。

    另一种可能的方法是覆盖蜘蛛的“start_requests”方法:

    def start_requests(self):
        df = pd.read_csv('test.csv')
        saved_column = df.ProductName
        for url in saved_column:
            yield Request(url, self.parse)
    

    想法来自这里:How to generate the start_urls dynamically in crawling?

    【讨论】:

    • "谢谢。效果很好。我正在尝试将 "a" 的值分配给一个项目。我正在尝试这样做:"
      def start_requests( self): df = pd.read_csv('test.csv') saved_column = df.ProductName for url in saved_column: item["Name"] = a yield Request(url, self.parse)
      “但是这些值没有与它在请求函数中获取的值同步。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2015-06-14
    • 2017-10-18
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多