Мне нужно извлечь данные из тега script нескольких URL с помощью Regex. Мне удалось реализовать код, который выполняет половину работы. У меня есть CSV-файл ('links.csv '
), который содержит все URL-адреса, которые мне нужно очистить. Мне удалось прочитать CSV и сохранить все URL-адреса в переменной с именем 'start_urls'
. Моя проблема в том, что мне нужен способ читать URL-адреса из 'start_urls'
по одному и выполнять следующую часть моего кода.
Когда я выполняю свой код в терминале, я получаю 2 ошибки:
1.ERROR: ошибка при получении запросов на запуск
2. TypeError: URL-адрес запроса должен быть str или unicode, полученный список
Как я могу исправить свой код? Я новичок в Scrapy, но мне действительно нужен этот скрипт ... Спасибо заранее!
Вот несколько примеров URL, которые я сохранил в исходном csv ('links.csv'):
"https://www.samsung.com/uk/smartphones/galaxy-note8/"
"https://www.samsung.com/uk/smartphones/galaxy-s8/"
"https://www.samsung.com/uk/smartphones/galaxy-s9/"
Вот мой код:
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)})