Scrapy xpath iterate (работает с оболочкой) - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь соскрести некоторую информацию из компании Великобритании.Я установил соединение с сайтом через оболочку и с помощью команды

 scrapy shell https://beta.companieshouse.gov.uk/search?q=a

и с помощью

response.xpath('//*[@id="results"]').extract()

мне удалось получить результаты обратно.

Я пыталсяположить это в программу, чтобы я мог экспортировать его в CSV или JSON.Но у меня проблемы с тем, чтобы заставить его работать .. Вот что я получил;

import scrapy


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

def start_requests(self):
    start_urls = ['https://beta.companieshouse.gov.uk/search?q=a']

def parse(self, response):
    products = response.xpath('//*[@id="results"]').extract()
    print(products)

Очень просто, но много пробовал.Любое понимание будет оценено !!

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

Эти строки кода являются проблемой:

def start_requests(self):
    start_urls = ['https://beta.companieshouse.gov.uk/search?q=a']

Метод start_requests должен возвращать итерируемое значение Request с;ваш возвращает None.

По умолчанию start_requests создает эту итерацию из URL-адресов, указанных в start_urls, поэтому простое определение ее как переменной класса (вне какой-либо функции) без переопределения start_requests будет работатькак хочешь.

0 голосов
/ 13 марта 2019

Попробуйте сделать:

import scrapy


class QuotesSpider(scrapy.Spider):

    name = "gov2"
    start_urls = ["https://beta.companieshouse.gov.uk/search?q=a"]

    def parse(self, response):
        products = response.xpath('//*[@id="results"]').extract()
        print(products)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...