Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Selenium和不同文本部分之间的空白刮除类的文本_Python_Selenium - Fatal编程技术网

Python 使用Selenium和不同文本部分之间的空白刮除类的文本

Python 使用Selenium和不同文本部分之间的空白刮除类的文本,python,selenium,Python,Selenium,我想用Selenium从这个网站上刮取类“撕裂点”的所有文本值: 因此,我使用以下函数: dots_graph = driver.find_element_by_class_name("tore-dots") dots_graph.text 结果是一个串联字符串,如:“6121198912101179685765554353454333” 但是,数字代表不同的位置,最多两位数。 如何使用分隔符符号刮除文本。例如,在列表中分隔的所有不同元素,而不是在字符串中串联?您可以使用驱

我想用Selenium从这个网站上刮取类“撕裂点”的所有文本值:

因此,我使用以下函数:

dots_graph = driver.find_element_by_class_name("tore-dots")
dots_graph.text
结果是一个串联字符串,如:“6121198912101179685765554353454333”

但是,数字代表不同的位置,最多两位数。
如何使用分隔符符号刮除文本。例如,在列表中分隔的所有不同元素,而不是在字符串中串联?

您可以使用
驱动程序。执行\u script
以获取文本值:

from bs4 import BeautifulSoup as soup
from selenium import webdriver
d = webdriver.Chrome('/Users/jamespetullo/Downloads/chromedriver')
d.get('https://www.fussballdaten.de/vereine/fc-bayern-muenchen/2019/')
dot_vals = d.execute_script('return Array.from(document.querySelectorAll("g.tore-dots text")).map(x => x.innerHTML)')
输出:

['2', '1', '1', '1', '1', '2', '6', '4', '2', '3', '5', '5', '4', '3', '3', '3', '2', '2', '2', '3', '2', '2', '2', '2', '1', '1', '2', '1', '1', '1', '1', '1', '1', '1']

在获得
点图
后,您应该使用
点图。查找元素
(在word
元素
中使用char
s
)以搜索
点图
中的所有
作为分隔元素,然后您应该使用
for
-循环从每个
中获取
.text

或者您可以尝试在一个
xpath

# doesn't work with `g` and `text` - maybe because it is inside `<SVG>` 
#all_items = driver.find_elements_by_xpath('//g[@class="tore-dots"]//text')

all_items = driver.find_elements_by_xpath('//*[@class="tore-dots"]//*[name()="text"]')

for item in all_items:
    print(item.text)

dot_vals = [item.text for item in all_items]

顺便说一句:
.text
并不意味着
就像它在
beautifulsoup


编辑:

最小工作代码

from selenium import webdriver

#driver = webdriver.Firefox()
driver = webdriver.Chrome()

driver.get('https://www.fussballdaten.de/vereine/fc-bayern-muenchen/2019/')

# close popup window with message
driver.find_element_by_xpath('//button[@aria-label="Einwilligen"]').click()

print('--- FIND ---')

dots_graph = driver.find_element_by_class_name("tore-dots")
all_items = dots_graph.find_elements_by_tag_name("text")

dot_vals = [item.text for item in all_items]
print(dot_vals)

print('--- XPATH (g, text) ---')

# doesn't work with `g` and `text` - maybe because it is inside `<SVG>` 
all_items = driver.find_elements_by_xpath('//g[@class="tore-dots"]//text')  

dot_vals = [item.text for item in all_items]
print(dot_vals)

print('--- XPATH (*, name) ---')

all_items = driver.find_elements_by_xpath('//*[@class="tore-dots"]//*[local-name()="text"]')

dot_vals = [item.text for item in all_items]
print(dot_vals)

print('--- XPATH (*, local-name) ---')

all_items = driver.find_elements_by_xpath('//*[@class="tore-dots"]//*[name()="text"]')

dot_vals = [item.text for item in all_items]
print(dot_vals)

print('--- CSS ---')

all_items = driver.find_elements_by_css_selector('.tore-dots text')

dot_vals = [item.text for item in all_items]
print(dot_vals)
从selenium导入webdriver
#driver=webdriver.Firefox()
driver=webdriver.Chrome()
司机,上车https://www.fussballdaten.de/vereine/fc-bayern-muenchen/2019/')
#关闭带有消息的弹出窗口
驱动程序。通过xpath(“//按钮[@aria label=“Einwilligen”]”)查找元素。单击()
打印('--FIND---')
dots\u graph=驱动程序。通过类名称(“tore dots”)查找元素
所有项目=点图。通过标记名称(“文本”)查找元素
dot_vals=[所有_项目中项目的item.text]
打印(点值)
打印('--XPATH(g,text)--')
#不适用于'g'和'text'-可能是因为它在``内
all_items=driver.find_elements_by_xpath('//g[@class=“tore dots”]//text'))
dot_vals=[所有_项目中项目的item.text]
打印(点值)
打印('--XPATH(*,name)--')
所有项目=驱动程序。通过xpath查找元素('/*[@class=“tore dots”]/*[local-name()=“text”]”)
dot_vals=[所有_项目中项目的item.text]
打印(点值)
打印('--XPATH(*,本地名称)--')
所有项目=驱动程序。通过xpath('//*[@class=“tore dots”]/*[name()=“text”]”查找元素
dot_vals=[所有_项目中项目的item.text]
打印(点值)
打印('--CSS---')
all_items=驱动程序。通过_css_选择器('.tore dots text')查找_元素
dot_vals=[所有_项目中项目的item.text]
打印(点值)

我们没有足够的信息来回答您的问题。请包括一个。谢谢,我编辑我的帖子,这样你可以更好地理解我的意思。
all_items = driver.find_elements_by_css_selector('.tore-dots text')

for item in all_items:
    print(item.text)

dot_vals = [item.text for item in all_items]
from selenium import webdriver

#driver = webdriver.Firefox()
driver = webdriver.Chrome()

driver.get('https://www.fussballdaten.de/vereine/fc-bayern-muenchen/2019/')

# close popup window with message
driver.find_element_by_xpath('//button[@aria-label="Einwilligen"]').click()

print('--- FIND ---')

dots_graph = driver.find_element_by_class_name("tore-dots")
all_items = dots_graph.find_elements_by_tag_name("text")

dot_vals = [item.text for item in all_items]
print(dot_vals)

print('--- XPATH (g, text) ---')

# doesn't work with `g` and `text` - maybe because it is inside `<SVG>` 
all_items = driver.find_elements_by_xpath('//g[@class="tore-dots"]//text')  

dot_vals = [item.text for item in all_items]
print(dot_vals)

print('--- XPATH (*, name) ---')

all_items = driver.find_elements_by_xpath('//*[@class="tore-dots"]//*[local-name()="text"]')

dot_vals = [item.text for item in all_items]
print(dot_vals)

print('--- XPATH (*, local-name) ---')

all_items = driver.find_elements_by_xpath('//*[@class="tore-dots"]//*[name()="text"]')

dot_vals = [item.text for item in all_items]
print(dot_vals)

print('--- CSS ---')

all_items = driver.find_elements_by_css_selector('.tore-dots text')

dot_vals = [item.text for item in all_items]
print(dot_vals)