使用WebDriver和Selenium在类内获取跨度

时间:2018-12-10 20:57:46

标签: python selenium selenium-webdriver web-scraping webdriver

我正在尝试在范围内抓取一个人的名字。 这个范围在一个类中。

遵循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)

5 个答案:

答案 0 :(得分:1)

# 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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

contacts = browser.find_elements_by_css_selector('._32mo span')
for contact in contacts:
    print(contact.text)

答案 3 :(得分:0)

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

contacts = browser.find_elements_by_xpath("//a[@class='_32mo')]/span")

for contact in contacts:
name=contact.text
print(name)

答案 4 :(得分:0)

这可以分三行实现-

elements=driver.find_elements_by_xpath('.//span[@class = "_32mo"]')

for element in elements:
    print(element.text)

为什么要这样做?

以上给出的解决方案都可以工作,尽管我更喜欢使用xpath,因为它会获取网页上存在的同一类的范围内所有值,而与嵌套无关。