Как извлечь текст в кнопке «Развернуть больше» с помощью скрапа? - PullRequest
0 голосов
/ 09 мая 2019

В URL: https://teslamotorsclub.com/tmc/threads/tesla-tsla-the-investment-world-the-2019-investors-roundtable.139047/page-2619

Пост # 52365

Прежде чем я получу текст, мне нужно нажать «развернуть больше», как я могу получить текст внутри него?Есть ли способ, при котором я могу активировать раскрытие больше, чтобы показать все во время выполнения скрипта паука?

Что я пробовал до сих пор, это

info.xpath (".// div[@class = 'messageContent'] "). extract_first (). replace ('\ n', '')

Но все же я не могу получить весь текст

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Вы, вероятно, видите текст "Нажмите, чтобы развернуть" в конце, но все еще получаете всю цитату. Вам нужно избегать извлечения текста «Нажмите, чтобы развернуть».

Например:

>>> response.xpath('//li[contains(@class, "message")][.//a/text()[.="#52365"]]//*[re:test(@class, "\\bquote\\b")]//text()').getall()
['CCS for model 3 coming', '\nWhile article references Europe, the North American theater will be getting a CCS adapter soon.', '\nSee article for', '\n', '\n', 'Tesla launches $190 CCS adapter for new Model S and Model X, offers retrofits for older vehicles', '\n', '\nMartian High Command', '\n', '\nPS: Text from article.', '\n', '\nUpdate: A Tesla spokesperson told us that they will make sure owners in North America will have access to all “compelling networks”, but they have nothing to announce now.']
0 голосов
/ 09 мая 2019

Как кто-то указал в комментариях, вам не нужно ничего нажимать. Если вы откроете инспектор документов в своем браузере, вы увидите, что весь текст там.

Вы можете получить все сообщения с помощью простых селекторов css и цикла for:

for post in sel.css('.messageList>li'): 
    text = ''.join(post.css('blockquote.messageText ::text').extract()) 
    print(text) 
    print('------')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...