首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从html页面中获取文本,并使用漂亮汤和python

从html页面中获取文本,并使用漂亮汤和python
EN

Stack Overflow用户
提问于 2018-08-05 03:01:51
回答 1查看 32关注 0票数 0

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

代码语言:javascript
复制
link: http://warframe.wikia.com/wiki/Frost

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

我以前用过bs4,但我不知道如何提取这个特定的文本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-05 04:09:58

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

代码语言:javascript
复制
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)

打印:

代码语言:javascript
复制
Frost's component blueprints are acquired from Lieutenant Lech Kril & Captain Vor (Exta, Ceres).

编辑:

在这个页面上,这个文本不容易被定位,没有封装它的标签。所以我的方法是从一个标记开始,从我找到的所有内容构建字符串,直到结束标记。

一些内容是NavigableString (纯文本)类型,一些内容是其他标记(我用.text属性从这些标记中获得字符串)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51688712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档