-3

我一直在看howdoi的源代码。 https://github.com/gleitz/howdoi

在这里 extract_links_from_bing 和 extract_links_from_google 有这种语法。

我试图在线搜索与 xml、元素树相关的所有内容,但在任何地方都找不到类似语法的构造函数。

这是功能

def _extract_links_from_bing(html):
    html.remove_namespaces()
    return [a.attrib['href'] for a in html('.b_algo')('h2')('a')]


def _extract_links_from_google(html):
    return [a.attrib['href'] for a in html('.l')] or \
    [a.attrib['href'] for a in html('.r')('a')]

我的问题是如何html('.b_algo')('h2')('a')迭代。任何与类似语法相关的链接将不胜感激。

谢谢阅读。

4

1 回答 1

0

该项目正在使用PyQuery,而不是 xml etree。

请注意,html来自_get_links()

def _get_links(query):
    search_engine = os.getenv('HOWDOI_SEARCH_ENGINE', 'google')
    search_url = _get_search_url(search_engine)

    result = _get_result(search_url.format(URL, url_quote(query)))
    html = pq(result)
    return _extract_links(html, search_engine)

pq来自这里:

from pyquery import PyQuery as pq

PyQuery可以像$从 jquery一样使用对象。这是您所指的函数调用语法。

从他们的快速入门:

>>> d("#hello")
[<p#hello.hello>]
>>> p = d("#hello")
>>> print(p.html())
Hello world !
>>> p.html("you know <a href='http://python.org/'>Python</a> rocks")
[<p#hello.hello>]
>>> print(p.html())
you know <a href="http://python.org/">Python</a> rocks
>>> print(p.text())
you know Python rocks
于 2018-08-02T02:42:28.597 回答