Python:如何在使用webdriver

时间:2018-02-06 08:32:48

标签: python selenium xpath selenium-webdriver webdriver

我使用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>

2 个答案:

答案 0 :(得分:1)

要从字符串中删除前几行,只需找出第一条相关信息的位置。

temp = "adknsad"

temp[2:]会输出类似"knsad"

的内容

你所拥有的那条弦应该是一样的。

我认为没有任何简单的方法可以解决马自达5的问题。

答案 1 :(得分:1)

在删除前3行时,您可以:

  • 用空格替换换行符(使用"#@5@#*&(\n"之类的字符串);或
  • 将原始字符串拆分为行并删除前3个字符串,然后再将它们组合"\n".join(g.split("\n")[3:])

第二个问题要困难得多,因为通过将tbody的所有内容保存到一个变量中,您实际上丢失了有关分隔符的信息。现在您无法知道空间是否最初存在,或者只是自动添加了分隔符。我建议单独抓取每个td单元格。