Я не могу понять, как использовать файл CSV для понимания списка в развертывании scrapinghub - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь развернуть паука на scrapinghub и не могу понять, как решить проблему ввода данных.Мне нужно прочитать идентификаторы из CSV-файла и добавить их к своим стартовым 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 работают, но я застрял при конвертацииданные ввода / вывода в список.Как происходит преобразование вызова данных в понимание списка?

РЕДАКТИРОВАТЬ: Спасибо!Это дало мне 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'"

1 Ответ

1 голос
/ 26 апреля 2019
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 должен уметь обрабатывать.Я надеюсь, что это поможет вам:)

...