ホームページ  >  に質問  >  本文

python - 怎么从BeautifulSoup得到的ResultSet里搜索想要的部分?

python脚本里的语句是

from bs4 import BeautifulSoup
import urllib2

response = urllib2.urlopen('http://xxxxxx')
html = response.read()
soup = BeautifulSoup(html)

res = soup.find_all(class_='pro-detail-price')

得到的res是ResultSet类型,print结果是:

[<p class="pro-detail-price">最低价格:<span>4399.0</span>(天猫旗舰店)
<p class="pro-detail-trend">
<iframe frameborder="0" height="210" scrolling="no" src="http://tool.manmanbuy.com/historyPro.aspx?w=290&amp;amp;h=210&amp;m=1&amp;e=0&amp;scroll=0&amp;id=327958" width="290"></iframe>
</p>
</p>]

如果想在这个ResultSet里找到特定的标签改用什么办法呢? 比如找到<span>4399.0</span>里的4399.0

黄舟黄舟2742日前1108

全員に返信(6)返信します

  • PHP中文网

    PHP中文网2017-04-17 17:11:55

    リーリー

    これでいいですか?

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:11:55

    find は最初に一致した結果のみを返し、findAll は ResultSet を返すことを覚えています
    したがって、検索結果は直接 res.span.string になる必要があります。そうでない場合は、単に res[0].span.string Bar

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:11:55

    find_all()find() は使いにくいです。CSS セレクターである select() を使用するのが最適です。
    大きなフレームを取得しました。たとえば、それがスープ内のタグである場合、次のようになります。

    リーリー

    この例では、results[0] は指定されたタグです。

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:11:55

    リーリー

    ランダムに試してみたところ、このコードに変更した出力結果は 4399.0 でしたが、マスターがより良い方法を提供してくれることを願っています、ありがとう

    返事
    0
  • 怪我咯

    怪我咯2017-04-17 17:11:55

    find で見つかった結果では、CSS セレクター select を使用して次の位置検索を実行できます。

    返事
    0
  • 怪我咯

    怪我咯2017-04-17 17:11:55

    リーリー

    返事
    0
  • キャンセル返事