使用beautifulsoup和python从html页面获取文本

时间:2018-08-04 19:01:51

标签: python html beautifulsoup

我需要抓取嵌套在该HTML页面中的这部分文本。

int *p = (int*)0x100000;
*p = 0x7FFFF;

我以前使用过bs4,但我不知道如何以任何方式提取此特定文本。

1 个答案:

答案 0 :(得分:0)

此页面对网页抓取不是很友好。我制作了一个函数get_text(),它带有两个参数tag_fromtag_to。它将抓取这两个标签之间的所有文本:

from bs4 import BeautifulSoup, NavigableString
import requests

soup = BeautifulSoup(requests.get('http://warframe.wikia.com/wiki/Frost').text, 'lxml')

def get_text(tag_from, tag_to):
    rv = ''
    while True:
        s = tag_from.next_sibling
        if s == tag_to:
            break
        if isinstance(s, NavigableString):
            rv += s
        else:
            rv += s.text
        tag_from = tag_from.next_sibling
    return rv.strip()

s = get_text(soup.select_one('#Acquisition').parent, soup.select_one('#Acquisition').parent.find_next('table'))
print(s)

打印:

Frost's component blueprints are acquired from Lieutenant Lech Kril & Captain Vor (Exta, Ceres).

编辑:

在此页面上,此文本不容易定位,没有封装它的标签。因此,我的方法是从一个标签开始,然后从我发现的所有内容中构建字符串,直到结束标签。

某些内容为NavigableString(纯文本)类型,某些内容为其他标签(我从这些标签中获得了带有.text属性的字符串)。