3

我无法使用 requests_html 提取正确的结果:

>>> from requests_html import HTMLSession
>>> session = HTMLSession()
>>> r = session.get('https://www.amazon.com/dp/B07569DYGN')
>>> r.html.find("#productDetails_detailBullets_sections1")
[]

我可以id在源内容中找到“productDetails_detailBullets_sections1”:

>>> """<table id="productDetails_detailBullets_sections1" class="a-keyvalue prodDetTable" role="presentation">""" in r.text
True

实际上,这个问题同样存在于 PyQuery 中。

为什么requests_html找不到这个元素?

4

1 回答 1

2

我正在寻找#comparison_price_row仍然可以找到的东西。源中的下一个 id 是comparison_shipping_info_row但搜索#comparison_shipping_info_row返回一个空数组。这两个元素位于同一级别(同一父级)。我检查了两者之间的所有来源,但没有发现问题。

首先。

然后我看到两者之间有一个 NUL 字节,这可能会使库绊倒。

从输入中删除 NUL 字节后,可以找到想要的元素:

r2 = requests_html.HTML(html=r.text.replace('\0', ''))
r2.find('#productDetails_detailBullets_sections1')

[<Element 'table' role='presentation' class=('a-keyvalue', 'prodDetTable') id='productDetails_detailBullets_sections1'>]
于 2018-10-08T10:31:58.527 回答