используя select all + copy text в Selenium для извлечения абзацев - PullRequest
0 голосов
/ 19 октября 2019

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

я обнаружил, что с помощью select all (ctrl + a) затем копируй и вставляй, что, кажется, позволяет получить весь видимый текст на веб-странице, идеально организованной в абзацы.

можно ли просто выделить все и скопировать, а затем сохранить выделенный текст без необходимости вставлять часть?

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Я понял это

это выглядит намного чище, чем использование запроса Beautifulsoup + и попытки отфильтровать видимый текст в HTML, если вы хотите получить абзацы

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pyperclip

driver=webdriver.Chrome()
link=''
driver.get(link)
element=driver.find_element_by_tag_name('body')
element.send_keys(Keys.CONTROL,'a')
element.send_keys(Keys.CONTROL,'c')
driver.quit()
alltext=pyperclip.paste()
paragraphs=[x for x in alltext.split('\n') if len(x)>100]
0 голосов
/ 19 октября 2019

На этот вопрос уже был дан ответ: BeautifulSoup Grab Visible Webpage Text

Но вот еще один пример для этого поста:

import requests
URL = '/13111567/ispolzuya-select-all-copy-text-v-selenium-dlya-izvlecheniya-abzatsev'
r  = requests.get(URL)
html = r.text

def tag_visible(element):
    if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']:
        return False
    if isinstance(element, Comment):
        return False
    return True

soup = BeautifulSoup(html,'lxml')
texts = soup.findAll(text=True)
visible_texts = filter(tag_visible, texts)  
print(u" ".join(t.strip() for t in visible_texts))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...