Веб-очистка всей страницы с помощью Scrapy и CSS-селекторов - PullRequest
0 голосов
/ 20 июня 2019

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

Проблема в том, что язапустив Scrapy Spider в Python, я получаю все пробелы: что мне не нужно, а также дополнительную информацию о странице, даже если я указал, что хочу только извлечь текст из моего кода.

Я пыталсяделая мои CSS-селекторы более конкретными, но я всегда получаю совсем никакой информации или недостаточно информации

import scrapy
from ..items import WholePageItem

class WholePageSpiderSpider(scrapy.Spider):
    name = 'whole_page_spider'
    start_urls = ['https://www.justanexample.com']

    def parse(self, response):
        items = WholePageItem()
        mission = response.css('body').css('::text').extract()

        items['mission'] = mission

        yield items

Вывод извлечения следующий:

   'THE GOOD TEXT I WANT TO EXTRACT',
         '\n',
         '\n',
         '\n',
         'window.purechatApi = { l: [], t: [], on: function () { '
         'this.l.push(arguments); } }; (function () { var done = false; '
         "var script = document.createElement('script'); script.async = "
         "true; script.type = 'text/javascript'; script.src = "
         "'https://blablabla.com'; "
         "document.getElementsByTagName('HEAD').item(0).appendChild(script); "
         'script.onreadystatechange = script.onload = function (e) { if '
         "(!done && (!this.readyState || this.readyState == 'loaded' || "
         "this.readyState == 'complete')) { var w = new PCWidget({c: "
         "'3a6f7d8e-a107-4582-b33c-c10aa2b80ac8', f: true }); done = true; "
         '} }; })();',
         '\n',

Что я пытаюсьполучить только эту часть: «ХОРОШИЙ ТЕКСТ, КОТОРЫЙ Я ХОЧУ ВЫДЕЛИТЬ»,

Мне не нужно быть конкретным, единственное, чего я не хочу, это '\ n', а также код вкод.

Что я могу сделать?спасибо

1 Ответ

0 голосов
/ 20 июня 2019

Я бы предложил вам использовать Celery вместе с Redis для асинхронной и запланированной очистки нескольких веб-страниц, если хотите. Кроме того, также пройти красивый суп для лучшего понимания соскоб. В этом случае просто для получения ожидаемого текста вы можете использовать метод split, например

list_separated_by_comma_words = sometext.split(',')

Вы не можете получить доступ ко всем ожидаемым словам путем индексации. Хотелось бы получить этот «ХОРОШИЙ ТЕКСТ, который Я ХОЧУ ЭКСТРАКТИРОВАТЬ», который вы можете сделать -

list_separated_by_comma_words[0]

Чтобы разделить на \ n, вы можете сделать то же самое. Но если вы хотите удалить '\ n', вы также можете использовать метод .strip().

...