【问题标题】:To use BeautifulSoup to extract parts of texts in webpage title使用 BeautifulSoup 提取网页标题中的部分文本
【发布时间】:2014-01-17 08:43:59
【问题描述】:

我要提取本页标题文字http://www.arizona.edu/colleges/college-agriculture-life-sciences

这是我目前的代码:

from bs4 import BeautifulSoup
import re
import urllib2

url = "http://www.arizona.edu/colleges/college-agriculture-life-sciences"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page.read())

uni_name=soup.title

print uni_name

但是结果是:

<title>College of Agriculture &amp; Life Sciences | The University of Arizona, Tucson, Arizona</title>

但我的理想结果是:

College of Agriculture & Life Sciences

我该怎么做?

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    .string 属性只为您提供标签文本:

    uni_name = soup.title.string
    

    如果您只想使用第一部分,请在| 管道上拆分:

    uni_name = soup.title.string.partition('|')[0].strip()
    

    这使用str.partition() 只拆分一次(为了提高效率),获取结果的第一部分,并删除该结果周围的任何多余空格。

    演示:

    >>> soup.title
    <title>College of Agriculture &amp; Life Sciences | The University of Arizona, Tucson, Arizona</title>
    >>> soup.title.string
    u'College of Agriculture & Life Sciences | The University of Arizona, Tucson, Arizona'
    >>> soup.title.string.partition('|')[0].strip()
    u'College of Agriculture & Life Sciences'
    

    【讨论】:

    • 感谢 Martijn 的超快速回复。但它在这里给出了一条错误消息 - RuntimeError:在 cmp 中超出了最大递归深度。是因为我使用的是 Python 2.7 吗?
    • @MarkK:我自己在 Python 2.7 中对此进行了测试;你用的是什么版本的 BeautifulSoup?
    • 我还要注意,“为了提高效率* - str.partition 在这种情况下快两倍……
    • @JonClements: 咕咕咕 str.partition-shmartition 咕咕咕。
    • @MarkK:该异常的回溯是什么?也许最好使用要点或馅饼。
    【解决方案2】:

    你可以试试这个库 (Goose)。

    我尝试使用 beautifulsoup 为几个网站创建自己的提取器,但后来我意识到 Goose 完全符合我的需要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      相关资源
      最近更新 更多