抓取用户个人资料和排序

时间:2019-12-10 08:56:21

标签: python-3.x selenium

您好,我正在抓取网站,该网站的标头和段落标签中存储了一些数据 像这样

<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
...
...

2 个答案:

答案 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)