如何使用BeautifulSoup访问子页面(相同的URL,不同的内容)?

时间:2019-10-17 16:19:51

标签: python beautifulsoup

在Python上使用BeautifulSoup,我正在尝试抓取此页面的子页面

https://www.mmorpg-stat.eu/0_fiche_alliance.php?pays=5&ftr=500208.all&univers=_146

更准确地说,标题为enter image description here的子页面

问题是,通过单击该按钮,URL不会更改(这被称为子页面吗?如果不是,那是什么?),所以我无法使用

访问该页面
url = '...'
requests.get(url)

在浏览器控制台上,按钮代码为

<td width="250" align="center" valign="middle" class="Style1_f_j barre_joueur1 fond_56_1" style="cursor:pointer;text-transform: uppercase" onclick="fcache12('faCacher');fcache13('ffond_gris');document.form1_2date.statview.value='2';document.forms['form1_2date'].submit();return false;">
                 <span style="color:#ffffff;">&nbsp;&nbsp;Other information</span>
</td>

我能理解的是,当单击该按钮时,它会调用某些fcache方法。

如何访问子页面?

1 个答案:

答案 0 :(得分:1)

  

我能理解的是,当单击该按钮时,它将调用某些fcache方法。

onclick="fcache12('faCacher');fcache13('ffond_gris');document.form1_2date.statview.value='2';document.forms['form1_2date'].submit();return false;"

它实际上调用了两种不同的方法:fcache12()fcache13()然后在页面中找到表单并提交

document.forms['form1_2date'].submit()

如果您搜索'form1_2date',则会发现:

<form name="form1_2date" method="post">

因此,要模拟单击此按钮,需要调用requests.post()而不是requests.get()。您还需要确定应传递的表单值。这些值由表单中的所有<input>标签确定。

或者,您可以使用selenium或类似的库来模拟浏览器中的用户交互,而不必尝试直接发出请求。