Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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
我怎样才能拿到``<;td>;`获取表HTML数据时,不带文本值的标记是否在Selenium Python的列表中占据位置?_Python_Selenium - Fatal编程技术网

我怎样才能拿到``<;td>;`获取表HTML数据时,不带文本值的标记是否在Selenium Python的列表中占据位置?

我怎样才能拿到``<;td>;`获取表HTML数据时,不带文本值的标记是否在Selenium Python的列表中占据位置?,python,selenium,Python,Selenium,我需要得到HTML表数据作为列表。该表有100列和50行。并非每个都有文本值,并且每行都不同于其他行(不同列中的无文本值) 因此,当我使用row.text时,它会返回一个列表,忽略没有文本的列表。每行的列表具有不同的长度。这不适合在excel文件中写入列表。 如果我一个一个地做,形成一个列表。这太慢了 用于驱动程序中的行。查找元素(By.XPATH,//table[@id=“mytable”]/tbody/tr') 打印(行.文本) html abc ttt bbb 使用Beautiful

我需要得到HTML表数据作为列表。该表有100列和50行。并非每个
都有文本值,并且每行都不同于其他行(不同列中的无文本值) 因此,当我使用
row.text
时,它会返回一个列表,忽略没有文本的列表。每行的列表具有不同的长度。这不适合在excel文件中写入列表。 如果我一个一个地做,形成一个列表。这太慢了

用于驱动程序中的行。查找元素(By.XPATH,//table[@id=“mytable”]/tbody/tr')
打印(行.文本)
html


abc
ttt
bbb
使用BeautifulSoup

从bs4导入美化组
soup=BeautitulSoup(driver.find_元素(By.XPATH,//table[@id=“mytable”]/tbody')。get_属性('innerHTML'),features='lxml'))
对于汤中的tr。查找所有('tr'):
列表=([text for text in tr.strings])
打印(列表)

我仍然会得到一个类似于['abc','cbd']的列表,我需要得到一个类似于['abc',''cbd']的列表。

您可以使用Selenium抓取整个表,然后使用Beautiful Soup解析它:

from bs4 import BeautifulSoup

html_table = driver.find_elements(By.XPATH, '//table[@id="mytable"]')
soup = BeautifulSoup(html_table)

# This is a fast way to get a list of all the <td> tags, even the empty ones:
td_list = soup('td')
从bs4导入美化组
html_table=driver.find_元素(By.XPATH,//table[@id=“mytable”]”)
汤=美汤(html_表)
#这是一种快速获取所有标记(即使是空标记)列表的方法:
td_list=汤('td')
然后,您可以将td标记写入excel文件


但根据您的情况,我可能只使用请求库而不是selenium来获取整个页面的HTML,然后使用Beautiful Soup来获取表格,然后从那里解析td标记

多亏了格贝格森。我最终得到了使用beautifulsoup不跳过空文本的方法

从bs4导入美化组
soup=BeautitulSoup(driver.find_元素(By.XPATH,//table[@id=“mytable”]/tbody')。get_属性('innerHTML'),features='lxml'))
对于汤中的tr。查找所有('tr'):
l=(tr.find_all('td')中td的td.get_text())
印刷品(l)

您能给我们看一下耗时较长的代码吗?实际上,我需要将文本写入excel文件,而不是td标签。我尝试了
tr.get_text(“|”)
,但仍然没有包括没有文本的。如果您能接受我的回答,我将不胜感激!我知道它不是直接解决你的特定问题所需要的代码,但是你说它让你走上正确的道路。你也可以尝试这样的事情:<汤中的代码>(TR):对于行中的标签(“TD”):List.AppEnter(tag .text)< /Cord> >它给你一个你想要的空白。