使用WebDriver和Selenium在类中获取span



我正试图在一个跨度中抓取一个人的名字。这个跨度在一个类中。

遵循HTML:

<div>
<a class="_32mo" href="https://www.facebook.com/goutham.pullela?ref=br_rs">
<span>Goutham Pullela</span>
</a>
</div>

我正在尝试使用find_elements_by_class_name,然后获得attribute,但span不是attribute。我没有这个span的身份证明。

contacts = browser.find_elements_by_class_name('_32mo')
for contact in contacts:
name = str(contact.get_attribute('span'))
print(name)

您可以简单地使用CSS选择器,然后打印span元素的text属性:

contacts = browser.find_elements_by_css_selector('._32mo span')
for contact in contacts:
print(contact.text)
# First we login into Facebook using:
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('https://www.facebook.com/')
driver.implicitly_wait(10)
email = driver.find_element_by_id("email")
email.send_keys("email@domain.tld")
passwd = driver.find_element_by_id("pass")
passwd.send_keys("MyP@$$w0rd");
passwd.send_keys(Keys.ENTER)
# Then We can search and retrieve the name list:
driver.get('https://www.facebook.com/search/283544874786/likers?ref=about')
x = driver.find_elements_by_xpath(".//a[contains(@class, '_32mo')]")
for y in x:
print(y.text)

Goutham Pullela
Avvaru Srinivasa Rao
Sanjay Bhushan
Ayurveda
Rachit Raj Ias
Anindita Sarkar (Rimi)
Sheela Arora
Padmapriya Rajesh
Manavi Singh
Sanaya Joshi
Kritika Singh
Nikhita Singh
Revathi
Sejal Budholiya
Devi Priya
Rashi Bhatia

一种更简单的方法是,检查元素,然后在控制台左上角,使用箭头标记并单击Goutham Pullela,然后您会在控制台上看到它高亮显示。复制该xpath并使用name = browser.find_elements_by_xpath('[paste xpath']).textprint(name)

如评论中所述:Xpath也非常灵活:

contacts = browser.find_elements_by_xpath("//a[@class='_32mo')]/span")
for contact in contacts:
name=contact.text
print(name)

这可以在3行中实现-

elements=driver.find_elements_by_xpath('.//span[@class = "_32mo"]')
for element in elements:
print(element.text)

为什么要这样做

上面给出的解决方案有效,尽管我更喜欢使用xpath,因为它独立于嵌套获取网页上同一类的跨度中的所有值。

最新更新