Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从多个URL读取碎片代码,然后将结果写入最终csv_Python_Regex_Scrapy - Fatal编程技术网

Python 从多个URL读取碎片代码,然后将结果写入最终csv

Python 从多个URL读取碎片代码,然后将结果写入最终csv,python,regex,scrapy,Python,Regex,Scrapy,我需要使用正则表达式从多个URL的脚本标记中提取数据。我已经实现了一个代码,完成了一半的工作。我有一个csv文件('links.csv'),其中包含我需要清理的所有URL。我设法读取csv并将所有URL存储在名为'start\u url'的变量中。我的问题是,我需要一种方法从'start\u url'一次读取一个URL,然后执行代码的下一部分。 在终端中执行代码时,我收到2个错误: 1.ERROR:获取启动请求时出错 2.TypeError:请求url必须是str或unicode,获取列表 如何

我需要使用正则表达式从多个URL的脚本标记中提取数据。我已经实现了一个代码,完成了一半的工作。我有一个csv文件(
'links.csv'
),其中包含我需要清理的所有URL。我设法读取csv并将所有URL存储在名为
'start\u url'
的变量中。我的问题是,我需要一种方法从
'start\u url'
一次读取一个URL,然后执行代码的下一部分。 在终端中执行代码时,我收到2个错误:

1.ERROR:获取启动请求时出错 2.TypeError:请求url必须是str或unicode,获取列表

如何修复我的代码?我是一个初学者在刮,但我真的需要这个脚本的工作。。。提前谢谢你

以下是我存储在初始csv(“links.csv”)中的URL示例:

这是我的密码:

import scrapy
import csv
import re

class QuotesSpider(scrapy.Spider):
    name = "quotes"

    def start_requests(self):
        with open('links.csv','r') as csvf:
            for url in csvf:
                yield scrapy.Request(url.strip())

    def parse(self, response):
        source = response.xpath("//script[contains(., 'COUNTRY_SHOP_STATUS')]/text()").extract()[0]
        def get_values(parameter, script):
            return re.findall('%s = "(.*)"' % parameter, script)[0]

        with open('baza.csv', 'w') as csvfile:
            fieldnames = ['Category', 'Type', 'SK']
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
            writer.writeheader()
            for pvi_subtype_name,pathIndicator.depth_5,model_name in zip(source):
                writer.writerow({'Category': get_values("pvi_subtype_name", source), 'Type': get_values("pathIndicator.depth_5", source), 'SK': get_values("model_name", source)})

将以下方法附加到spider:

def start_requests(self):
    with open('links.csv','r') as csvf:
        for url in csvf:
            yield scrapy.Request(url.strip())

并用…从代码中删除前面的

非常感谢@mizhgun!我已经根据您的建议编辑了代码并运行了它。我仍然有两个错误。我认为它们出现在最后一个csv文件('baza.csv')中,但我真的不知道如何修改它。错误有:1。对于pvi_子类型_名称、pathIndicator.depth_5、zip中的模型_名称(源代码):ValueError:没有足够的值来解压缩(预期为3,得到1)和2。source=response.xpath(//脚本[包含(,'COUNTRY\u SHOP\u STATUS')]/text())。extract()[0]索引器错误:列表索引超出范围。我也编辑了上面的代码。再次感谢你!
def start_requests(self):
    with open('links.csv','r') as csvf:
        for url in csvf:
            yield scrapy.Request(url.strip())