抓取数据并非来自 url

Scrapping data not coming from exact url

我正在尝试从 rswiki 中删除一些怪物信息框 table。

一些特定的怪物有多个等级,例如:

https://oldschool.runescape.wiki/w/Dwarf

您可以通过单击信息框顶部的框来切换不同级别:“7 级”、“10 级”...

单击级别框后,它会更改 url 以匹配级别。

所以当我请求 url https://oldschool.runescape.wiki/w/Dwarf#Level_10, it's bringing data from the first level only, in case: https://oldschool.runescape.wiki/w/Dwarf#Level_7 时,我无法取消其他关卡。

import requests
from bs4 import BeautifulSoup

url = 'https://oldschool.runescape.wiki/w/Dwarf#Level_20'
response = requests.get(url, headers = {'User-Agent':'Mozilla/5.0'})
soup = BeautifulSoup(response.content, 'html.parser')
soup_minfobox = soup.find_all('table', class_ ="infobox infobox-switch no-parenthesis-style infobox-monster")

print(soup_minfobox[0].text)

输出:Level 7Level 10Level 11Level 20DwarfReleased6 April 2001 (Update)MembersNoCombat level7Size1x1 ...

对不起,临时代码,但在输出中你可以看到它最后是来自 lv 7 的数据,虽然 url 是 lv 20.

如果您手动触发事件(从浏览器的控制台),您会看到信息框发生变化:

$("span[data-switch-anchor='#Level_7']").click();
$("span[data-switch-anchor='#Level_10']").click();
$("span[data-switch-anchor='#Level_11']").click();
$("span[data-switch-anchor='#Level_20']").click();

因此您可以使用上述选择器并参考以下主题中提供的关于如何使用 BeautifulSoup 调用事件的答案: