Python Selenium 从 class 中获取文本
Python Selenium get text out of a class
嘿,我想要这个 class 中的文本并在控制台中打印它。
我该怎么做?
我试过:
profileName = driver.find_element_by_class_name("._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl").text()
print(profileName)
如果你能帮助我,我会很高兴。
汤姆·鲁道夫
如果该元素具有所有这些 class 名称,您只需将 find_element_by_class_name
更改为 find_element_by_css_selector
,如下所示:
profileName = driver.find_element_by_css_selector("._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl").text()
print(profileName)
但是我很确定这些 class 名称是动态变化的,所以这不会起作用。
另外,请确保在访问元素之前添加了一些延迟/等待。
也许试试这个
来自 BeautifulSoup 图书馆
从头开始:
import requests
from bs4 import BeautifulSoup
url = 'my_site'
r = request.get (url)
re1 = BeautifulSoup (r.text, "lxml")
re2 = re1.body.find_all ('div', {'class': '._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl'})
for syntax in re2 [:]:
print (syntax)
哪里有div你可以在这个class是(a,p,h)的地方放另一个标签
哪里有 div 你可以在这个 class 是 (a, p, h)
的地方放另一个标签
并且在 selenium 中,而不是 'element' 使用 'elements',在收获时最好收集所有东西:D
但是当你想点击一个元素或输入一些东西(send_keys () 或点击 ())时,你必须使用单一数量的字符,即 'element' 而不是 'elements'
我为 selenium webdriver 做这个
data1 = driver.find_elements_by_class_name('class')
data2 = driver.find_elements_by_css_selector('css_selector")
if len(data1) > 0:
do something
if len(data2) > 0:
do something
如果您想查看错误是如何弹出的,您可以随时添加 else,打印 (len (data1)) 或 data2 以查看您收集了多少数据等。
在python中不是text()
,是.text
这个 ._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl
看起来也很动态,css_selector
不是 class_name
。
代码 1 :
profileName = driver.find_element_by_css_selector("._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl").text
print(profileName)
代码 2 :
profileName = driver.find_element_by_css_selector("._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl").get_attribute('innerHTML')
print(profileName)
嘿,我想要这个 class 中的文本并在控制台中打印它。
我该怎么做?
我试过:
profileName = driver.find_element_by_class_name("._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl").text()
print(profileName)
如果你能帮助我,我会很高兴。
汤姆·鲁道夫
如果该元素具有所有这些 class 名称,您只需将 find_element_by_class_name
更改为 find_element_by_css_selector
,如下所示:
profileName = driver.find_element_by_css_selector("._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl").text()
print(profileName)
但是我很确定这些 class 名称是动态变化的,所以这不会起作用。
另外,请确保在访问元素之前添加了一些延迟/等待。
也许试试这个 来自 BeautifulSoup 图书馆
从头开始:
import requests
from bs4 import BeautifulSoup
url = 'my_site'
r = request.get (url)
re1 = BeautifulSoup (r.text, "lxml")
re2 = re1.body.find_all ('div', {'class': '._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl'})
for syntax in re2 [:]:
print (syntax)
哪里有div你可以在这个class是(a,p,h)的地方放另一个标签 哪里有 div 你可以在这个 class 是 (a, p, h)
的地方放另一个标签并且在 selenium 中,而不是 'element' 使用 'elements',在收获时最好收集所有东西:D 但是当你想点击一个元素或输入一些东西(send_keys () 或点击 ())时,你必须使用单一数量的字符,即 'element' 而不是 'elements'
我为 selenium webdriver 做这个
data1 = driver.find_elements_by_class_name('class')
data2 = driver.find_elements_by_css_selector('css_selector")
if len(data1) > 0:
do something
if len(data2) > 0:
do something
如果您想查看错误是如何弹出的,您可以随时添加 else,打印 (len (data1)) 或 data2 以查看您收集了多少数据等。
在python中不是text()
,是.text
这个 ._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl
看起来也很动态,css_selector
不是 class_name
。
代码 1 :
profileName = driver.find_element_by_css_selector("._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl").text
print(profileName)
代码 2 :
profileName = driver.find_element_by_css_selector("._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl").get_attribute('innerHTML')
print(profileName)