2016-11-22 49 views
4

我目前开始使用美丽的网站来抓取网站,即使我缺乏关于网页的理论知识,我想我已经掌握了一些基本知识,但我会尽我所能来制定我的问题。是否可以用美丽的方式来刮掉一个“动态网页”?

我的意思是动态网页的内容如下:一个网站的HTML根据用户行为而改变,在我的例子中它是可折叠的表格。

我想获得一些“div”标签内的数据,但是当你加载页面时,数据在html代码中看起来不可行,当你点击它扩展的表格时,这个“div “从”可以折叠的东西“变成”可折叠的可折叠的东西“这样的变化,我可以用我的知识来刮擦。

我可以使用beautifulsoup获取这些数据吗?如果我不能,我想用硒之类的东西点击所有的表格,然后下载我可以刮的html,有没有更简单的方法?

非常感谢。

+2

硒可能是您最好的选择,然后使用'driver.page_source'来获取HTML。如果你想要更具体的建议,看看一些代码会很有帮助。 –

+0

问题是当页面使用JavaScript/AJAX加载数据时。如果您知道'JavaScript/AJAX'使用哪个URL来获取数据,那么您可以使用'urllib/requests'来获取这些数据。您可以在Chrome/Firefox中使用'DevTools'来手动查找这个URL,然后就可以在Python代码中使用它。但是你必须了解HTTP,DevTools,有时候JavaScript,XPath等。BTW:关闭浏览器中的JavaScript和加载页面,你会看到什么urllib /请求(和BS)看到。 – furas

+0

[用BeautifulSoup刮掉一系列表格的可能的副本](http://stackoverflow.com/questions/13345085/scrape-a-series-of-tables-with-beautifulsoup) – aneroid

回答

0

这取决于。如果数据在页面加载时已经加载,那么数据可用于刮除,它只是在不同的元素中,或者被隐藏起来。如果点击事件触发以某种方式加载数据,则不会,您需要Selenium或其他无头浏览器来自动执行此操作。

美丽的汤是只有一个HTML解析器,所以无论你通过请求页面获得的数据是美丽的汤可以访问的唯一数据。