1

我正在使用 bs4 并希望从文档中返回对特定内置 Python 函数的描述,例如从这个页面获取 abs():

https://docs.python.org/2/library/functions.html

会返回这个:

绝对 (x)

返回一个数字的绝对值。参数可以是普通整数或长整数或浮点数。如果参数是复数,则返回其大小。

<p>除了元素以及如何<p>仅获取该元素及其文本之外,我一直坚持我应该寻找的内容。我知道我可以进行findAll搜索,但我想在不使用页面中的文本的情况下执行此操作(例如,好像用户事先不知道文本是什么):

import requests, bs4, re

res = requests.get('https://docs.python.org/2/library/functions.html')
res.raise_for_status()
abs_soup = bs4.BeautifulSoup(res.text)
abs_elems = abs_soup.body.findAll(text=re.compile('^abs$'))
print abs_elems
abs_desc = abs_soup.select   # this is the part Im stuck on
print abs_desc
4

2 回答 2

1

嗯,Python的文档把所有的函数都放在里面<dl class="function">了,里面有一个<dt id="name_of_the_function">

所以我建议只使用:

import requests
from bs4 import BeautifulSoup

res = requests.get('https://docs.python.org/2/library/functions.html')
abs_soup = BeautifulSoup(res.text, "html.parser")

print(abs_soup.find('dt', {'id': 'abs'}).find_next('dd').text)

输出:

返回一个数字的绝对值。参数可以是普通整数或长整数或浮点数。如果参数是复数,则返回其大小。

首先,我们用于abs_soup.find('dt', {'id': 'abs'})查找<dt>具有absas it's的标签id,然后我们用于.find_next('dd')获取该<dd>标签之后的下一个dt标签。

最后,使用.text获取该<dd>标签的文本,但您也可以使用.find_next('p').text),输出是相同的。

于 2016-01-09T05:11:34.040 回答
1

我愿意,

>>> func = abs_soup.select('dl.function')
>>> for i in func:
    if i.select('dt#abs'):
        print 'abs\n'
        print i.select('dd')[0].text


abs

Return the absolute value of a number.  The argument may be a plain or long
integer or a floating point number.  If the argument is a complex number, its
magnitude is returned.

>>> 

或者

用这个替换我的代码的最后两行..

    print i.find('dt').text
    print i.find('dd').text
于 2016-01-09T05:06:12.977 回答