Извлечение всего текста с веб-сайта с использованием скрапа / очистки данных - PullRequest
0 голосов
/ 18 февраля 2020

Я пытался создать программу (я приведу приведенный ниже код), которая будет сканировать каждую страницу, найденную в домене, а затем очищать весь текст, содержащийся на сайте.

Я создал программу, которая, кажется, берет весь текст с каждой страницы, однако вся информация «теряется» во всем коде веб-сайта и отображается следующим образом.

n \ t \ t \ t \ t ',' \ n \ t \ t \ t \ t ',' \ n \ t \ t \ t \ t ',' \ n \ t \ t \ t ',' Dry облицовка - это система для облицовки внутренних поверхностей зданий, таких как стены и потолки с гипсокартоном, когда «влажная» штукатурка не требуется. ',' \ t \ t ',' \ n \ t \ t \ t \ t ',' \ n \ t \ t \ t \ t \ t \ t ',' \ n \ t \ t \ t ',' \ n \ t \ t ',' \ n \ t \ t \ t \ t \ t \ t ',' \ n \ t \ t \ t ',' \ n \ ',' \ n \ t \ t \ t \ t \ t \ t ',' \ n \ t \ t \ t ',' \ n \ t \ t ',' \ n \ t \ t \ t \ t ',' \ n \ t \ t \ t ',' \ n \ t \ t \ t \ t \ t ', '\ n \ t \ t \ t \ t', '\ n \ t \ t \ t \ t', '\ n \ t \ t \ t', 'Coving', '\ t \ t', '\ n \ t \ t \ t \ t ',' \ n \ t \ t \ t \ t ',' \ n \ t \ t \ t \ t ',' \ n \ t \ t \

Может кто-нибудь помочь мне очистить текст, чтобы у меня осталась только соответствующая информация, пожалуйста!

Вот код:

from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor


class MySpider(CrawlSpider):
    name = 'c'
    allowed_domains = ['billsplastering.co.uk']
    start_urls = ['https://www.billsplastering.co.uk/']

    rules = (
        Rule(LinkExtractor(), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        filename = response.url.split("/")[-2] + '.html'
        with open(filename, 'wb') as f:
            f.write(response.body)
        print(response.css("::text").extract())```




1 Ответ

1 голос
/ 18 февраля 2020

Попробуйте это. Он удаляет начальные и конечные пробелы из списка, который вы разместили над кодом. Затем он отфильтровывает пустые строки.

list_body = [
    'n\t\t\t\t', '\n\t\t\t\t', '\n\t\t\t\t', '\n\t\t\t', 
    'Dry lining is a system for cladding the internal faces of buildin gs, such as walls and ceilings when with plasterboard when "wet" plaster is not required.', 
    '\t\t', '\n\t\t\t\t', '\n\t\t\t\t\t\t', '\n\t\t\t', '\n\t\t', 
    '\n\t\t\t\t\t\t', '\n\t\t\t', '\n\ ', '\n\t\t\t\t\t\t', '\n\t\t\t', '\n\t\t', 
    '\n\t\t\t\t', '\n\t\t\t', '\n\t\t\t\t\t', '\n\t\t\t\t', '\n\t\t\t\t', 
    '\n\t\t\t', 'Coving', '\t\t', '\n\t\t\t\t', '\n\ t\t\t\t', '\n\t\t\t\t', '\n\t\t\t']

# Strip blanks from items in list
list_no_blanks = [text.strip() for text in list_body]

# Filter out empty strings
list_filter = list(filter(lambda x: x != "", list_no_blanks))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...