【发布时间】:2020-11-17 21:05:31
【问题描述】:
我正在尝试抓取这样的网页
<html>
etc etc..
<div id='due'>
<h2>title</h2>
<div>
<div class='desc'>
sub1
</div>
</div>
<div>
<div class='desc'>
sub2
</div>
</div>
<div>
<div class='desc'>
subn
</div>
</div>
<h2>title2</h2>
<div>
<div class='desc'>
sub1
</div>
</div>
<div>
<div class='desc'>
sub2
</div>
</div>
<div>
<div class='desc'>
subn
</div>
</div>
</div>
etc etc..
</html>
我首先尝试抓取该部分:
box = tree.xpath('//*[@id="due"]/*')
然后:
for div in box:
print(div.tag)
它正确返回每个元素的每个第一个标签,但是如果:
for div in box:
if div.tag == 'div':
print(div.xpath('//div[@class="desc"]').text)
从起始文档而不是从每个单独的 'div' 进行 n 次相同的搜索
我希望:
sub1
sub2
subn
sub1
sub2
subn
它返回,列表没有“.text”属性,但如果我打印每个列表:
[sub1, sub2, subn, sub1, sub2, subn]
[sub1, sub2, subn, sub1, sub2, subn]
[sub1, sub2, subn, sub1, sub2, subn]
[sub1, sub2, subn, sub1, sub2, subn]
[sub1, sub2, subn, sub1, sub2, subn]
[sub1, sub2, subn, sub1, sub2, subn]
是的,您会认为我应该运行一次代码,但我需要在每次迭代中进行一些变化并创建数据关系,那么我该如何解决这个问题?
在此感谢您
【问题讨论】:
标签: python-3.x xpath web-scraping