我怎样才能拿到``<;td>;`获取表HTML数据时,不带文本值的标记是否在Selenium Python的列表中占据位置?
我需要得到HTML表数据作为列表。该表有100列和50行。并非每个我怎样才能拿到``<;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
都有文本值,并且每行都不同于其他行(不同列中的无文本值)
因此,当我使用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> >它给你一个你想要的空白。