您好,我正在抓取网站,该网站的标头和段落标签中存储了一些数据 像这样
<h2>Name</h2>
<p>example</p>
<p>example</p>
<p>example</p>
<p>example</p>
<p>example</p>
<p>example</p>
----
<h2>Name</h2>
.....
我要做的是打印这些标签中的所有信息 我有点成功了 这是我的代码
for h2 in driver.find_elements_by_tag_name('h2'):
print (h2.text)
for p in driver.find_elements_by_tag_name('p'):
print (p.text)
print ('---------------------------------------------------------------------------------')
driver.quit()
当我运行这段代码时,我会像这样打印所有的p标签
names
a
b
c
---------------------------------------------------------------------------------
Age
66 years old
---------------------------------------------------------------------------------
Gender
Male
但是我想要的是它先打印名称,然后打印该人的信息,然后再打印另一个名称,并且它出现在我的脚本中,只是先抽出所有名称,然后 打印信息,因此很难与同一个人匹配数据 那就是我希望它像这样运行的方式
name
a
info
info
info
------------
name
b
...
...
我该如何解决这个问题
编辑: 能够使用div xpath将它们一起打印
temp = driver.find_element_by_xpath('//*[@id="v-b"]').text
time.sleep(1)
print (temp)
just lacking a separator now like this
name
a
info
info
info
------------
name
b
...
...
答案 0 :(得分:0)
尝试以下方法:
for h2 in driver.find_elements_by_tag_name('h2'):
print (h2.text)
for p in h2.find_elements_by_xpath(".//parent::div/p"):
print (p.text)
print ('---------------------------------------------------------------------------------')
driver.quit()
答案 1 :(得分:0)
首先获取列表,然后进行迭代,请尝试以下代码-
h2s = driver.find_elements_by_tag_name('h2')
for h2 in h2s:
print(h2)
ps = driver.find_elements_by_tag_name('p')
for p in ps:
print(p)