Xpath 问题解析来自 parent 个具有样式属性的标签的 child 个标签
Xpath problem parsing child tags from parent tags that has style attribute
以下是html内容的片段:
<div class="post-inner wow bounceInUp animated" data-wow-offset='80' data-wow-delay="0s" data-wow-duration="0.8s">
<a href="https://url.com/hello/" class="post-link"></a>
<div class="post-pic lazyload" data-bg="https://url.com/wp-content/uploads/2019/01/opioid-300x200.jpg" *style="background-image: url('');" * /></div>
<div class="tags-wrapper">
<a href="/tag/hello-world">Hello World</a>
<a href="/tag/noob">Noob</a>
</div>
<h3>
<a href="https://url.com/hello/">
My First Title-Hello</a>
</h3>
</div>
我正在尝试提取 h3 中的标题和 link。
我正在做的是:
>>> from lxml.html import fromstring
>>> content = """
<div class="post-inner wow bounceInUp animated" data-wow-offset='80' data-wow-delay="0s" data-wow-duration="0.8s">
... <a href="https://url.com/hello/" class="post-link"></a>
... <div class="post-pic lazyload" data-bg="https://url.com/wp-content/uploads/2019/01/opioid-300x200.jpg" *style="background-image: url('');" * /></div
>
... <div class="tags-wrapper">
... <a href="/tag/hello-world">Hello World</a>
... <a href="/tag/noob">Noob</a>
... </div>
... <h3>
... <a href="https://url.com/hello/">
... My First Title-Hello</a>
... </h3>
... </div>"""
>>> html_response = fromstring(content)
>>> main_tag = html_response.xpath('//div[@class="post-inner wow bounceInUp animated"]')
>>> main_tag
[<Element div at 0x106b347e0>]
>>> main_tag[0].xpath('div')
[<Element div at 0x106b34788>]
>>> main_tag[0].xpath('a')
[<Element a at 0x106b34838>]
>>> main_tag[0].xpath('a/@href')
['https://url.com/hello/']
>>> main_tag[0].xpath('h3/a')
[]
>>> main_tag[0].xpath('h3')
[]
>>>
我无法在此处通过 h3 标记。在进行故障排除时,如果我删除
*style="background-image: url('');" * /
我可以提取标签。
任何人都可以帮助我吗?
您正在捕获的 div
在第 3 行的末尾关闭(注意该行的第一个 div
以 />
结尾)。因此,您要捕获的 h3
元素不在 div
.
中
以下是html内容的片段:
<div class="post-inner wow bounceInUp animated" data-wow-offset='80' data-wow-delay="0s" data-wow-duration="0.8s">
<a href="https://url.com/hello/" class="post-link"></a>
<div class="post-pic lazyload" data-bg="https://url.com/wp-content/uploads/2019/01/opioid-300x200.jpg" *style="background-image: url('');" * /></div>
<div class="tags-wrapper">
<a href="/tag/hello-world">Hello World</a>
<a href="/tag/noob">Noob</a>
</div>
<h3>
<a href="https://url.com/hello/">
My First Title-Hello</a>
</h3>
</div>
我正在尝试提取 h3 中的标题和 link。 我正在做的是:
>>> from lxml.html import fromstring
>>> content = """
<div class="post-inner wow bounceInUp animated" data-wow-offset='80' data-wow-delay="0s" data-wow-duration="0.8s">
... <a href="https://url.com/hello/" class="post-link"></a>
... <div class="post-pic lazyload" data-bg="https://url.com/wp-content/uploads/2019/01/opioid-300x200.jpg" *style="background-image: url('');" * /></div
>
... <div class="tags-wrapper">
... <a href="/tag/hello-world">Hello World</a>
... <a href="/tag/noob">Noob</a>
... </div>
... <h3>
... <a href="https://url.com/hello/">
... My First Title-Hello</a>
... </h3>
... </div>"""
>>> html_response = fromstring(content)
>>> main_tag = html_response.xpath('//div[@class="post-inner wow bounceInUp animated"]')
>>> main_tag
[<Element div at 0x106b347e0>]
>>> main_tag[0].xpath('div')
[<Element div at 0x106b34788>]
>>> main_tag[0].xpath('a')
[<Element a at 0x106b34838>]
>>> main_tag[0].xpath('a/@href')
['https://url.com/hello/']
>>> main_tag[0].xpath('h3/a')
[]
>>> main_tag[0].xpath('h3')
[]
>>>
我无法在此处通过 h3 标记。在进行故障排除时,如果我删除
*style="background-image: url('');" * /
我可以提取标签。
任何人都可以帮助我吗?
您正在捕获的 div
在第 3 行的末尾关闭(注意该行的第一个 div
以 />
结尾)。因此,您要捕获的 h3
元素不在 div
.