温馨提示:本文翻译自stackoverflow.com,查看原文请点击:web scraping - How do you add a new line in an xpath expression?
web-scraping xpath

web scraping - 如何在xpath表达式中添加新行?

发布于 2020-04-12 12:16:29

给定以下html内容:

<div>
  <h3>Name :</h3>
  <p>Person A</p>
  <h3>Name :</h3>
  <p>Person B</p>
  <h3>Name :</h3>
  <p>Person c</p>
</div>

我需要使用xPath提取p标记下每个人的名字。当我使用以下表达式时:

name = container.xpath(".//h3[text()='Name :']/following-sibling::p/text()") 

我在提取的.csv文件中得到此输出:

Person A Person B Person C

但是我需要在每个人之后都有换行符,如下所示:

Person A
Person B
Person C

我用来获取csv文件的代码如下:

with open("person.csv", "w") as f:
    writer = csv.DictWriter(f, fieldnames = fieldnames, lineterminator = '\n')
    writer.writeheader()
    for row in output:
        writer.writerow(row)

有没有一种方法可以构造xPath来实现这一目标?

查看更多

提问者
Derrick jamal
被浏览
116
Jack Fleeting 2020-02-04 20:22

尝试这样的事情:

name = container.xpath(".//h3[text()='Name :']/following-sibling::p/text()") 
names = ''
for n in name:
    names+=(n+'\n')

和使用namesoutput您保存到CSV之前。