私はこのようなリンクを持っています
<div class="systemRequirementsMainBox">
<div class="systemRequirementsRamContent">
<span title="000 Plus Minimum RAM Requirement">1 GB</span> </div>
そこから1 GB
を取得しようとしています。私は試した
tt = [a['title'] for a in soup.select(".systemRequirementsRamContent span")]
for ram in tt:
if "RAM" in ram.split():
print (soup.string)
None
を出力します。
a['text']
を試しましたが、KeyErrorが発生しました。これをどのように修正できますか?私の間違いは何ですか?
CSSセレクターを使用して、タイトルテキストを使用して必要なスパンをプルすることができます。
soup = BeautifulSoup("""<div class="systemRequirementsMainBox">
<div class="systemRequirementsRamContent">
<span title="000 Plus Minimum RAM Requirement">1 GB</span> </div>""", "xml")
print(soup.select_one("span[title*=RAM]").text)
(spanがtitle属性に[〜#〜] ram [〜#〜]が含まれていることがわかります。これはpythonで言うことと同じです、if "RAM" in span["title"]
。
またはfindをre.compileとともに使用する
import re
print(soup.find("span", title=re.compile("RAM")).text)
すべてのデータを取得するには:
from bs4 import BeautifulSoup
r = requests.get("http://www.game-debate.com/games/index.php?g_id=21580&game=000%20Plus").content
soup = BeautifulSoup(r,"lxml")
cont = soup.select_one("div.systemRequirementsRamContent")
ram = cont.select_one("span")
print(ram["title"], ram.text)
for span in soup.select("div.systemRequirementsSmallerBox.sysReqGameSmallBox span"):
print(span["title"],span.text)
それはあなたに与えるでしょう:
000 Plus Minimum RAM Requirement 1 GB
000 Plus Minimum Operating System Requirement Win Xp 32
000 Plus Minimum Direct X Requirement DX 9
000 Plus Minimum Hard Disk Drive Space Requirement 500 MB
000 Plus Gd Adjusted Operating System Requirement Win Xp 32
000 Plus Gd Adjusted Direct X Requirement DX 9
000 Plus Gd Adjusted Hard Disk Drive Space Requirement 500 MB
000 Plus Recommended Operating System Requirement Win Xp 32
000 Plus Recommended Hard Disk Drive Space Requirement 500 MB
BeautifulSoupでspan
タグを使用するか、class
、title
などの他の属性をspan
タグとともに含めることができます。
from BeautifulSoup import BeautifulSoup as BSHTML
htmlText = """<div class="systemRequirementsMainBox">
<div class="systemRequirementsRamContent">
<span title="000 Plus Minimum RAM Requirement">1 GB</span> </div>"""
soup = BSHTML(htmlText)
spans = soup.findAll('span')
# spans = soup.findAll('span', attrs = {'class' : 'your-class-name'}) # or span by class name
# spans = soup.findAll('span', attrs = {'title' : '000 Plus Minimum RAM Requirement'}) # or span with a title
for span in spans:
print span.text