Как я могу получить правильный ответ от скрапа? - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь очистить некоторые результаты поиска из этого регистра компании, но когда я пытаюсь очистить название компании, мои результаты не возвращаются должным образом, это похоже на то, что элемент названия компании разделен на 2 элемента HTML на основе ключевого слова поиска. .

Есть ли способ объединить их? Это мой паук

import scrapy

class QuotesSpider(scrapy.Spider):

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

def parse(self, response):

for i in response.css('ul.results-list'):
  yield {
      'company_name': i.css('li.type-company h3 a::text').extract(),
      'address': i.css('li.type-company p::text').extract(),
  }

Мои результаты, как вы можете видеть, отсутствуют некоторые части .. enter image description here

Надеюсь, кто-нибудь из вас увидит, что происходит .. спасибо!

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Используя регулярное выражение, просто изменил код для лучшего вывода.

import re
import scrapy


class QuotesSpider(scrapy.Spider):
  name = 'gov2'
  start_urls = ['https://beta.companieshouse.gov.uk/search/companies?q=a']

    def parse(self, response):
      for i in response.css('.type-company'):
        yield {
            'company_name': re.sub('\s+', ' ', ''.join(i.css('h3 a ::text').extract())),
            'address': re.sub('\s+', ' ', ''.join(i.css('p ::text').extract())),
        }
1 голос
/ 25 марта 2019

Как я вижу, вы хотите получить все тексты в тегах a и p, и в этих тегах много tags.

Попробуйте это и удалите ненужные пробелы через regex:

import scrapy
import re

class QuotesSpider(scrapy.Spider):

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

    def parse(self, response):

      for i in response.css('ul.results-list'):
         yield {
          'company_name': re.sub('\s+',' ',''.join(i.css('li.type-company h3 a ::text').extract())),
          'address': re.sub('\s+',' ',''.join(i.css('li.type-company p ::text').extract())),
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...