我想获得以下内容:
<select name="Detect" id="313" class="select" style="display: none;">
<option value="650" maxmad="15" maxpad="2" status="TRUE" context="24"> 5 </option>
<option value="660" maxmad="16" maxpad="2" status="TRUE" context="25"> 6 </option>
我想刮掉并打印出以下内容,650来自“value”,15来自“maxmad”并打印出来(有很多这些选项,我想打印所有这些) :
650: 15
660: 16
670: 17
etc
etc
这是我尝试过的:
driver = webdriver.PhantomJS()
window = driver.set_window_size(1120, 550)
site = driver.get("www.website.com")
soup = BeautifulSoup(site, "html.parser")
for option in soup.find_all("option"):
print('id: {}, maxmad: {}'.format(option['id'], option.text))
答案 0 :(得分:0)
这里有多个错误,因为每次下载页面都比较难以找到和尝试。您应该首先制作一个包含相关代码的最小HTML文件,然后使用它来测试解析代码。
然后,您会注意到使用site.find_all
时应该使用soup.find_all
的第一件事。修复后,您会发现option
没有id
,并且您应该搜索select
以获取id
:
from bs4 import BeautifulSoup
html_str = """
<html>
<body>
<select name="Detect" id="313" class="select" style="display: none;">
<option value="650" maxmad="15" maxpad="2" status="TRUE" context="24"> 5 </option>
<option value="660" maxmad="16" maxpad="2" status="TRUE" context="25"> 6 </option>
</body>
</html>
"""
soup = BeautifulSoup(html_str, "html.parser")
select = soup.select("select")[0]
for select in soup.select("select"):
ident = select['id']
for option in select.find_all("option"):
print('value: {}, maxmad: {}'.format(option['value'], option['maxmad'])
给出:
value: 650, maxmad: 15
value: 660, maxmad: 16