【问题标题】:How to scrape the #text xml using selenium webdriver python?如何使用 selenium webdriver python 抓取#text xml?
【发布时间】:2019-06-24 13:11:15
【问题描述】:

我正在尝试抓取此网站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]")]

【问题讨论】:

  • 所以,您愿意解析您在描述中的双引号中提到的那个网站的那部分文本,对吧?
  • @SIM 是的,其他我可以废弃的东西。

标签: python-3.x python-2.7 selenium-webdriver web-scraping


【解决方案1】:

使用 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.

【讨论】:

    【解决方案2】:

    要使用Selenium 提取文本Century Office Products, Inc.,您需要对visibility_of_element_located() 使用WebDriverWait,您可以使用以下Locator Strategy

    • Xpath

      • 代码块:

        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.
        

    【讨论】:

      猜你喜欢
      • 2014-02-22
      • 2017-09-18
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      相关资源
      最近更新 更多