【问题标题】:Trying to pull text from a certain span class试图从某个跨度类中提取文本
【发布时间】:2019-05-08 16:55:52
【问题描述】:

我一直在尝试打印网站上<span> 标记中的文本。我尝试过的所有没有给我错误的东西都返回了空。完全不打印。

这是我的代码:

import time
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import ssl
from twilio.rest import Client
from twilio.rest import TwilioRestClient
browser = webdriver.Chrome()
browser.get(('https://www.hubzu.com/property/9007091467618-3632-Stokes-Drive-Sarasota-FL-34232'))
propertyname = browser.find_element_by_css_selector('span.h1')
propertyName1 = propertyname.text

print(propertyName1)

这是我要从中提取的跨度类:

<span class="h1">
<span id="streetName" class="header_bold propStreetAddress">
3632
Stokes Drive</span><span>, Sarasota, FL 34232</span>
</span>

【问题讨论】:

    标签: python html python-3.x selenium web-scraping


    【解决方案1】:

    使用BeautifulSoup 来抓取更复杂的 HTML sn-ps 要简单得多:

    from bs4 import BeautifulSoup as soup
    from selenium import webdriver
    d = webdriver.Chrome()
    d.get('https://www.hubzu.com/property/9007091467618-3632-Stokes-Drive-Sarasota-FL-34232')
    print(soup(d.page_source, 'html.parser').find('span', {'class':'h1'}).text)
    

    输出:

    '\n\n3632\nStokes Drive, Sarasota, FL 34232\n'
    

    【讨论】:

    • 成功了。是的,甚至没有考虑过使用 beautifulSoup 。谢谢!
    • @reggiejones 很高兴为您提供帮助!
    【解决方案2】:

    发生的事情是,有两个span 标记为h1。第一个是隐藏的。这就是您得到空结果的原因,因为find_element 返回定位器找到的第一个元素。

    尝试以下方法:

    browser.get(('https://www.hubzu.com/property/9007091467618-3632-Stokes-Drive-Sarasota-FL-34232'))
    propertyname = browser.find_element_by_css_selector('div.row.header-top-navigation span.h1')
    print(propertyname.text)
    

    【讨论】:

      【解决方案3】:

      它可能并不适用于所有人,但在这种情况下,您可以只使用 requests 和 bs4

      from bs4 import BeautifulSoup as bs
      import requests
      
      r = requests.get('https://www.hubzu.com/property/9007091467618-3632-Stokes-Drive-Sarasota-FL-34232', headers = {'User-Agent' : 'Mozilla/5.0'})
      soup = bs(r.content, 'lxml')
      print(soup.select_one('.img-responsive')['alt'])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-13
        • 1970-01-01
        • 1970-01-01
        • 2019-11-07
        • 1970-01-01
        • 2020-06-01
        相关资源
        最近更新 更多