Попытка вытащить текст из определенного класса span - PullRequest
1 голос
/ 08 мая 2019

Я пытался напечатать текст, найденный в теге <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, который я пытаюсь вывести из:

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

Ответы [ 3 ]

2 голосов
/ 08 мая 2019

Гораздо проще использовать BeautifulSoup для очистки более сложных фрагментов HTML:

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'
0 голосов
/ 08 мая 2019

Может быть не для всех, но в этом случае вы можете просто использовать запросы и 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'])
0 голосов
/ 08 мая 2019

То, что происходит, состоит в том, что есть два 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...