1

美しいスープを学んでいます。必要な html 行を追跡することに成功しました。次のステップは、それらの行から Id 値を抽出することです。

行を見つけるコードは次のようになります。

object = soup_station.find('img',{'src': re.compile("^Controls")})

オブジェクトを印刷すると、次のようになります。

<img src="Controls/RiverLevels/ChartImage.jpg?Id=471&amp;ChartType=Histogram" id="StationDetails_Chart1_chartImage" alt="Current river level" />

上記の行で抽出したい部分は"471"afterId=です。

re.searchon objectを使ってみましたが、オブジェクトがテキストではないようです。

どんな助けでも大歓迎です!

4

2 に答える 2

0

オブジェクトのソースで正規表現検索を実行していることを確認する必要があります。これを試すことができます:

import re
ele = soup_station.find('img')
src = ele['src']

match = re.search(r'\?Id=(\d+)', src)
ele_id = match.group(1)
于 2013-06-18T21:23:38.350 に答える
0

以下を適応させることができます。

s = '<img src="Controls/RiverLevels/ChartImage.jpg?Id=471&amp;ChartType=Histogram" id="StationDetails_Chart1_chartImage" alt="Current river level" />'

from bs4 import BeautifulSoup
import re
from urlparse import urlsplit, parse_qs


soup = BeautifulSoup(s)
# find the node with a src starting with Controls
node = soup.find('img',{'src': re.compile("^Controls")})
# Break up the url in the src attribute
url_split = urlsplit(node['src'])
# Parse out the query parameter from the url
qs = parse_qs(url_split.query)
# Display the value for `Id`
print qs['Id'][0]
于 2013-06-18T21:18:26.090 に答える