анализировать закодированный текст веб-страницы с помощью scrapy - PullRequest
0 голосов
/ 01 марта 2020

Я не могу извлечь предварительный просмотр содержания книги из онлайн-магазина книг
он запретил копирование предварительного просмотра книг путем кодирования текста, если я не ошибаюсь? , я ищу предварительный просмотр этой книги
со страницы просмотра, выглядит так, каждое слово находится за пределами тега span!, внутренний тег span десять di git код, соответствующий каждому слову

<span style='color:red;display:none;'>pq8BMvE37g</span>ولا <span style='color:red;display:none;'>G9XGnpBjnY</span>قدرة 

я потерпел неудачу после попытки с помощью scrapy python:

response.xpath("//*[@class='nabza']").extract()  

, чтобы отфильтровать текст

response.xpath("//*[@class='nabza']/text()").extract() 

1 Ответ

1 голос
/ 02 марта 2020

Самый быстрый способ - использовать XPath:

string(//div[@class='nabza'])

Затем регулярное выражение ([a-zA-Z0-9] +) для замены кодов di git пробелами.

В качестве альтернативы вы можете использовать этот XPath:

//div[@class='nabza']//*[not(self::span)]/text()

Не более десяти ди git код. Вы, вероятно, должны сделать некоторую очистку (проверьте, правильно ли объединены 473 части текста, проверьте \ r \ n, ...), и вы должны получить что-то вроде этого: https://paste2.org/mWhxzxpj

РЕДАКТИРОВАТЬ: R код:

library(RCurl)
library(XML)
page=getURL("https://www.neelwafurat.com/itempage.aspx?id=lbb179878-143056&search=books", httpheader = c('User-Agent' = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0"),.encoding = 'UTF-8')
parse=htmlParse(page,encoding = "UTF-8")
text=xpathSApply(parse,"//div[@class='nabza']//*[not(self::span)]/text()",xmlValue)
result=paste0(text,collapse = "")
writeLines(result,"result.txt",useBytes=T)
...