Я новичок python / scrapy - так что, пожалуйста, не обращайте на меня внимания sh: -).
Я создал следующего паука-скрапа, который ползет по некоторым сайтам и экстрактам сканируемый контент (состоящий из трех разных категорий данных) и помещающий его в список словарей. Паук выглядит следующим образом:
class BgeSpiderSpider(Spider):
name = 'BGE_Spider'
allowed_domains = ['some site']
start_urls = ['some site']
def parse(self, response):
l = ItemLoader(item=MySpiderItem(), response=response)
volumes = response.xpath('some xpath/@href').extract()
for volume in volumes:
absolute_volume_url = response.urljoin(volume)
yield Request(absolute_volume_url, callback=self.parse_volume)
def parse_volume(self, response):
BGEs = response.xpath('some xpath/@href').extract()
for BGE in BGEs:
absolute_BGE_url = response.urljoin(BGE)
yield Request(absolute_BGE_url, callback=self.parse_BGE)
def parse_BGE(self, response):
articles = [article.strip() for article in response.xpath('some xpath/text()').extract()]
articles = list(filter(None, articles))
considerations = [consideration.strip() for consideration in response.xpath('some xpath/text()').extract()]
considerations = list(filter(None, considerations))
merged_considerationsI = [''.join(i) for i in considerations]
merged_considerationsII = ' '.join(merged_considerationsI)
facts = [fact.strip() for fact in response.xpath('some xpath/text()').extract()]
facts = list(filter(None, facts))
merged_factsI = [''.join(i) for i in facts]
merged_factsII = ' '.join(merged_factsI)
items = BGEItem()
items['articles'] = articles
items['facts'] = merged_factsII
items['considerations'] = merged_considerationsII
yield {
'Articles': articles,
'Sachverhalt': merged_factsII,
'Erwaegungen': merged_considerationsII
}
Как уже было сказано, я бы хотел отфильтровать просканированное содержимое на французском языке и вынуть из списка (словарей) такие целые словари. Все остальные данные на немецком языке. Я попытался добиться этого следующим образом (пример только для переменной 'fact'):
text = TextBlob(merged_factsII)
if (text.detect_language() == 'de'):
merged_facts_german = merged_factsII
Но это не работает.
'merged_facts_II' должно иметь тип данных str; на самом деле это не список строк. Вот почему я напрямую передаю его в TextBlob.
Я не уверен, в чем проблема. Как уже говорилось, я полный Python новичок, и, следовательно, это может быть абсолютно тривиальной проблемой здесь.
Большое спасибо за вашу помощь!