Python 如何在不点击展开按钮的情况下刮取页面的源代码?

Python 如何在不点击展开按钮的情况下刮取页面的源代码?,python,selenium,Python,Selenium,此特定网站有一个“显示更多”按钮。从表中加载更多数据。但这些数据似乎是在开始时加载的,因为我可以单击它并在脱机模式下展开表 在Selenium中,有没有一种方法可以一次完成整个源代码,而无需多次单击此按钮?因为在第一次加载页面时,整个表似乎都是最初加载的 在这种情况下,driver.get_source不会显示全部内容,只显示打开浏览器时可以看到的内容 使用Python、Selenium和Google Chrome。如果确实在开始时加载了所有数据,那么可以通过查看DOM(在标记处或可能包含数据的

此特定网站有一个“显示更多”按钮。从表中加载更多数据。但这些数据似乎是在开始时加载的,因为我可以单击它并在脱机模式下展开表

在Selenium中,有没有一种方法可以一次完成整个源代码,而无需多次单击此按钮?因为在第一次加载页面时,整个表似乎都是最初加载的

在这种情况下,driver.get_source不会显示全部内容,只显示打开浏览器时可以看到的内容


使用Python、Selenium和Google Chrome。

如果确实在开始时加载了所有数据,那么可以通过查看DOM(在标记处或可能包含数据的任何其他标记处)找到它。简单的方法是打开控制台(F12)并使用浏览器提供的inspect element工具

现在,为了回答您的问题,我将在找到的位置(标签)使用BeautifulSoup来抓取数据。我已经看到,使用Selenium进行抓取与BeautifulSoup非常相似,因此您可能会得到这个概念

例如,您的表驻留在一个div中(具有随机属性,比如一个名为“randomclass”的类)。表标记为“ul”,每个条目都存储在“li”中,或者具体存储在“li”中。text()

要选择div,请执行以下操作:

selected_div = soup.find('div', attrs={'class': 'randomclass'})
要选择div内的表,请执行以下操作:

table = selected_div.find('ul')
要遍历表行并管理数据,请执行以下操作:

for li in table.find_all('li'):
        mylist.append(li.text())

当我打开浏览器并进行检查时,数据不可见。但是当我关闭我的互联网并点击“显示更多”时,它确实会加载更多,并且我可以在没有互联网连接的情况下加载整个列表。如果是这样,我的答案对你的问题就不再有效了。因为这意味着该表稍后将通过Javascript在后台加载。BeautifulSoup不处理Javascript抓取,但幸运的是,Selenium处理Javascript抓取。您可能需要查看加载的脚本的变量,并找到表的数据所在的位置。在那之后,我会使用什么功能?是否可以在不点击“加载更多”按钮20次的情况下加载整个表(使用selenium)?