我使用xpath helper来帮助我在登录网站中删除表格。
代码:
g=driver.find_element_by_xpath("//table[@id='DataGrid']/tbody").text
print(g)
结果如下所示,数据类型为“string”:
#@5@#*&(
&*(%#IO
!@%&*(O)
2018/02/02 206 MAZDA MAZDA 5 5660-ES 2006 01 1999 70000 white A
2018/02/02 210 BMW 330 9378-W6 2006 01 2996 80000 black C
2018/02/02 211 MITSUBISHI FORTIS ALK-3501 2015 04 1798 100000 white C+
我想在没有前三行的情况下将此字符串写入csv并使用逗号分隔它们,否则它们将全部组合在一起。
代码在这里:
if "#@5@#*&(" in g and "&*(%#IO" in g and "!@%&*(O)" in g:
g=g.replace("#@5@#*&(", "")
g=g.replace("&*(%#IO", "")
g=g.replace("!@%&*(O)", "")
g=g.replace(' ', ',')
print(g)
file_name="C:/Test.csv"
with open(file_name,'a') as file:
file.write(g+'\n')
困扰我的是我不知道如何删除前三行。我用空格替换它们,但它们仍然存在,每当我写入csv时,它们都会发生。其次,当我用逗号分隔它们时,会出现一些错误。像马自达5一样,它不应该分开。有什么好方法可以解决这个问题吗?或者我应该在csv文件中更正它?
源代码:
<tr align="left" style="height:40px;">
<td>2018/02/02</td>
<td>206</td>
<td>MAZDA</td>
<td>MAZDA 5</td>
<td>5660-ES</td>
<td>2006</td>
<td>01</td>
<td>1999</td>
<td>70000</td>
<td>white</td>
<td align="center" valign="middle"></td>
<td>A</td>
</tr>
答案 0 :(得分:1)
要从字符串中删除前几行,只需找出第一条相关信息的位置。
temp = "adknsad"
temp[2:]
会输出类似"knsad"
你所拥有的那条弦应该是一样的。
我认为没有任何简单的方法可以解决马自达5的问题。
答案 1 :(得分:1)
在删除前3行时,您可以:
"#@5@#*&(\n"
之类的字符串);或"\n".join(g.split("\n")[3:])
第二个问题要困难得多,因为通过将tbody的所有内容保存到一个变量中,您实际上丢失了有关分隔符的信息。现在您无法知道空间是否最初存在,或者只是自动添加了分隔符。我建议单独抓取每个td
单元格。