Как добавить новую строку в выражение xpath? - PullRequest
1 голос
/ 02 февраля 2020

Учитывая следующее html содержимое:

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

Мне нужно извлечь имя каждого человека под тегом p, используя xPath. Когда я использую следующее выражение:

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

я получаю этот вывод в извлекаемом файле .csv:

Person A Person B Person C

Но мне нужно иметь разрывы строк после каждого человека, например this:

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 для достижения этого?

1 Ответ

1 голос
/ 04 февраля 2020

Попробуйте что-то вроде этого:

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

и используйте names в вашем output перед сохранением в CSV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...