Как очистить #text xml с помощью python селеновой вебдрайвера? - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь очистить этот веб-сайт Century Office Products, Inc и не могу очистить этот текст:

Century Office Products, Inc. industry is listed as Ret Misc Merchandise

, так как тег, в котором он содержится, является #text,Ниже приведен код, который я пробовал:

driver.get('https://www.corporationwiki.com/New-Jersey/Middlesex/century-office-products-inc/53844156.aspx')
text = [k.text for k in driver.find_elements_by_xpath("//div[@class='card']//div[@class='card-body']//h2//following::p[2]")]

Ответы [ 2 ]

2 голосов
/ 24 июня 2019

Использование xpath:

import requests
from lxml.html import fromstring

link = "https://www.corporationwiki.com/New-Jersey/Middlesex/century-office-products-inc/53844156.aspx"

r = requests.get(link, headers={'User-Agent':'Mozilla/5.0'})
tree = fromstring(r.text)
elem = tree.xpath("//*[@class='card-body']/div/following::text()")[0].strip()
print(elem)

с помощью селектора CSS:

import requests
from bs4 import BeautifulSoup

link = "https://www.corporationwiki.com/New-Jersey/Middlesex/century-office-products-inc/53844156.aspx"

r = requests.get(link, headers={'User-Agent':'Mozilla/5.0'})
soup = BeautifulSoup(r.text, 'lxml')
elem = soup.select_one("[class='card-body'] > div").next_sibling.strip()
print(elem)

Они оба производят один и тот же результат:

Century Office Products, Inc. industry is listed as Ret Misc Merchandise.
1 голос
/ 24 июня 2019

Для извлечения текста Century Office Products, Inc. с использованием Selenium вам необходимо использовать WebDriverWait для visibility_of_element_located(), и вы можете использовать следующие Стратегия локатора :

  • * Xpath * 1016

    • Кодовый блок:

      chrome_options = webdriver.ChromeOptions() 
      chrome_options.add_argument("start-maximized")
      chrome_options.add_argument('disable-infobars')
      chrome_options.add_argument('--allow-running-insecure-content')
      driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
      driver.get("https://www.corporationwiki.com/New-Jersey/Middlesex/century-office-products-inc/53844156.aspx")
      print(driver.execute_script('return arguments[0].lastChild.textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//h1[@itemprop='legalName']")))).strip())
      
    • Выход на консоль:

      Century Office Products, Inc.
      
...