BeautifulSoup 试图获取选定的值抓取 IMDB 但出现错误
BeautifulSoup trying to get selected value scraping IMDB but getting error
我正在尝试使用 BeautifulSoup 从以下 HTML 中获取所选值,但无法获取。
<select id="bySeason" tconst="tt0944947" class="current">
<!--
This ensures that we don't wind up accidentally marking two options
(Unknown and the blank one) as selected.
-->
<option value="1">
1
</option>
<!--
This ensures that we don't wind up accidentally marking two options
(Unknown and the blank one) as selected.
-->
<option selected="selected" value="8">
2
</option>
</select>
这就是我正在尝试但徒劳的。
season_container = page_html.find_all("select", class_="current")
print(season_container.find_all('option', selected=True))
你们很亲近。
season_container = page_html.find_all("select", class_="current")[0] # <- first ele.
print(season_container.find_all('option', selected=True))
第一行 returns 一个数组,因此您必须指定 select (大概)第一个元素。
代码的另一部分没问题。
您可以使用 id
来缩小搜索范围。
from bs4 import BeautifulSoup
html = """<select id="bySeason" tconst="tt0944947" class="current">
<!--
This ensures that we don't wind up accidentally marking two options
(Unknown and the blank one) as selected.
-->
<option value="1">
1
</option>
<!--
This ensures that we don't wind up accidentally marking two options
(Unknown and the blank one) as selected.
-->
<option selected="selected" value="8">
2
</option>
</select>
"""
soup = BeautifulSoup(html, "html.parser")
selected_value = soup.find("select", {"id":"bySeason"}).find("option",selected=True)
print(selected_value.get_text(strip=True))
print("-------")
print(selected_value["value"])
输出:
2
-------
8
我正在尝试使用 BeautifulSoup 从以下 HTML 中获取所选值,但无法获取。
<select id="bySeason" tconst="tt0944947" class="current">
<!--
This ensures that we don't wind up accidentally marking two options
(Unknown and the blank one) as selected.
-->
<option value="1">
1
</option>
<!--
This ensures that we don't wind up accidentally marking two options
(Unknown and the blank one) as selected.
-->
<option selected="selected" value="8">
2
</option>
</select>
这就是我正在尝试但徒劳的。
season_container = page_html.find_all("select", class_="current")
print(season_container.find_all('option', selected=True))
你们很亲近。
season_container = page_html.find_all("select", class_="current")[0] # <- first ele.
print(season_container.find_all('option', selected=True))
第一行 returns 一个数组,因此您必须指定 select (大概)第一个元素。 代码的另一部分没问题。
您可以使用 id
来缩小搜索范围。
from bs4 import BeautifulSoup
html = """<select id="bySeason" tconst="tt0944947" class="current">
<!--
This ensures that we don't wind up accidentally marking two options
(Unknown and the blank one) as selected.
-->
<option value="1">
1
</option>
<!--
This ensures that we don't wind up accidentally marking two options
(Unknown and the blank one) as selected.
-->
<option selected="selected" value="8">
2
</option>
</select>
"""
soup = BeautifulSoup(html, "html.parser")
selected_value = soup.find("select", {"id":"bySeason"}).find("option",selected=True)
print(selected_value.get_text(strip=True))
print("-------")
print(selected_value["value"])
输出:
2
-------
8