Web Scraping с Python - перезапустите Spider перед завершением - PullRequest
0 голосов
/ 25 апреля 2020

Я работаю с пауком на Python, чтобы удалить текст из Интернета. Я должен ввести слово, pu sh enter, и тогда начинается паук. Мне нужно знать, существует ли способ перезапустить паука, когда он завершает работу sh перед закрытием, например: я передаю какое-то слово, паук отбрасывает информацию, когда он заканчивает работу sh, он возвращается в начало и просит меня напечатать другое слово и т. д.

Это мой код:

spider.py:

import scrapy
from scrapy.spiders import Spider
from verbos.items import MercadoItem


class MercadoSpider(scrapy.Spider):
name = 'verbos'
allowed_domain = ['www.pt.bab.la']
print("Ingrese un verbo:")
variable = input()
start_urls = ['https://pt.bab.la/verbo/portugues/' + variable]

eu_xpaths = (
    '//*[@id="conjFull"]/div[2]/div/div[2]/div[1]/div[2]/text()', 
    '//*[@id="conjFull"]/div[2]/div/div[4]/div[1]/div[2]/text()',
    ' //*[@id="conjFull"]/div[2]/div/div[3]/div[1]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[5]/div[1]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[6]/div[1]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[8]/div[1]/div[2]/text()',
    '//*[@class="content-column"]/div[3]/div[1]/div[1]/div[2]/div[1]/div[2]/text()',
    '//*[@class="content-column"]/div[3]/div[1]/div[1]/div[3]/div[1]/div[2]/text()',
    '//*[@class="content-column"]/div[6]/div[1]/div[1]/div[2]/div[1]/div[2]/text()',
    '//*[@class="content-column"]/div[5]/div[1]/div[1]/div[2]/div[1]/div[2]/text()'
    )
tu_xpaths= (
    '//*[@id="conjFull"]/div[2]/div/div[2]/div[2]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[4]/div[2]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[3]/div[2]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[5]/div[2]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[6]/div[2]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[8]/div[2]/div[2]/text()',
    '//*[@class="content-column"]/div[3]/div[1]/div[1]/div[2]/div[2]/div[2]/text()',
    '//*[@class="content-column"]/div[3]/div[1]/div[1]/div[3]/div[2]/div[2]/text()',
    '//*[@class="content-column"]/div[6]/div[1]/div[1]/div[2]/div[1]/div[2]/text()',
    '//*[@class="content-column"]/div[5]/div[1]/div[1]/div[2]/div[1]/div[2]/text()'
    )
voce_xpaths= (
    '//*[@id="conjFull"]/div[2]/div/div[2]/div[3]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[4]/div[3]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[3]/div[3]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[5]/div[3]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[6]/div[3]/div[2]/text()',
    '//*[@id="conjFull"]/div[2]/div/div[8]/div[3]/div[2]/text()',
    '//*[@class="content-column"]/div[3]/div[1]/div[1]/div[2]/div[3]/div[2]/text()',
    '//*[@class="content-column"]/div[3]/div[1]/div[1]/div[3]/div[3]/div[2]/text()',
    '//*[@class="content-column"]/div[6]/div[1]/div[1]/div[2]/div[1]/div[2]/text()',
    '//*[@class="content-column"]/div[5]/div[1]/div[1]/div[2]/div[1]/div[2]/text()'
    )
nos_xpaths= (
'//*[@id="conjFull"]/div[2]/div/div[2]/div[4]/div[2]/text()',
'//*[@id="conjFull"]/div[2]/div/div[4]/div[4]/div[2]/text()',
'//*[@id="conjFull"]/div[2]/div/div[3]/div[4]/div[2]/text()',
'//*[@id="conjFull"]/div[2]/div/div[5]/div[4]/div[2]/text()',
'//*[@id="conjFull"]/div[2]/div/div[6]/div[4]/div[2]/text()',
'//*[@id="conjFull"]/div[2]/div/div[8]/div[4]/div[2]/text()',
'//*[@class="content-column"]/div[3]/div[1]/div[1]/div[2]/div[4]/div[2]/text()', '//*[@class="content-column"]/div[3]/div[1]/div[1]/div[3]/div[4]/div[2]/text()', '//*[@class="content-column"]/div[6]/div[1]/div[1]/div[2]/div[1]/div[2]/text()', '//*[@class="content-column"]/div[5]/div[1]/div[1]/div[2]/div[1]/div[2]/text()'
)
voces_xpaths= (
'//*[@id="conjFull"]/div[2]/div/div[2]/div[6]/div[2]/text()',
'//*[@id="conjFull"]/div[2]/div/div[4]/div[6]/div[2]/text()',
'//*[@id="conjFull"]/div[2]/div/div[3]/div[6]/div[2]/text()',
'//*[@id="conjFull"]/div[2]/div/div[5]/div[6]/div[2]/text()',
'//*[@id="conjFull"]/div[2]/div/div[6]/div[6]/div[2]/text()',
'//*[@id="conjFull"]/div[2]/div/div[8]/div[6]/div[2]/text()',
'//*[@class="content-column"]/div[3]/div[1]/div[1]/div[2]/div[6]/div[2]/text()', '//*[@class="content-column"]/div[3]/div[1]/div[1]/div[3]/div[6]/div[2]/text()', '//*[@class="content-column"]/div[6]/div[1]/div[1]/div[2]/div[1]/div[2]/text()', '//*[@class="content-column"]/div[5]/div[1]/div[1]/div[2]/div[1]/div[2]/text()'
)
campos = ("eu", "tu", "voce", "nos", "voces")


def parse(self, response):

       response.selector.remove_namespaces()

       for xpaths in zip (self.eu_xpaths, self.tu_xpaths, self.voce_xpaths, self.nos_xpaths, self.voces_xpaths):
           data = [response.xpath(xpath).getall() for xpath in xpaths]
           yield {campo: valor for campo, valor in zip(self.campos, data)}

settings.py:

BOT_NAME = 'verbos'

SPIDER_MODULES = ['verbos.spiders']
NEWSPIDER_MODULE = 'verbos.spiders'

ITEM_PIPELINES = {'verbos.pipelines.MercadoPipeline': 200}

FEED_FORMAT = "csv"
FEED_URI = 'verbos_items.csv'
FEED_EXPORT_ENCODING='cp1252'

ROBOTSTXT_OBEY = False

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...