我正在尝试在 python 中编写一个脚本,允许我向网页发送一个 get 请求(使用 python requests 模块),然后使用模块 beautiful soup 解析响应。
我遇到的问题是我试图获取的表在初始 DOM 加载后通过 javascript 加载/创建,因此对我的获取请求的响应不包含它。
我正在尝试在 python 中编写一个脚本,允许我向网页发送一个 get 请求(使用 python requests 模块),然后使用模块 beautiful soup 解析响应。
我遇到的问题是我试图获取的表在初始 DOM 加载后通过 javascript 加载/创建,因此对我的获取请求的响应不包含它。
您可以做两件事,这取决于您的问题。
1.直接获取表
如果你真的想获取表,检查发出什么请求来获取表。例如,您可以使用 Firebug 或 Chrome 开发人员工具来获取请求的正确结构。
2. Javascript很重要
如果支持很多网站更重要,并且javascript发挥一些作用很重要,您可以使用Selenium之类的东西来使用执行Javascript的Brwoser,您可以在表格后获取源代码加载。
更新- 基于您评论中的 URL
您可以Network
在 Chrome 开发人员工具的选项卡上看到,它为此请求加载了很长时间:
http://www.ticketmaster.com/json/browse/music?select=n93
因此,我们假设这会加载您的数据。在浏览器中打开 URL,您会看到表中的数据是JSON 格式的。如果您只想解析/获取此表并且对于很多页面没有通用性,我将使用这种方法获取数据。
更新
尝试使用过滤器或日期范围更改表格。您可以检查 API 的工作方式并以您想要的方式发出请求。
未来 7 天内的舞蹈/电子过滤器:
/json/browse/music?g=Dance%2FElectronic&select=n7
还有另一个 API 调用:
http ://www.ticketmaster.com/json/browse/music/histogram?select=n7
但我不能告诉你它是干什么用的。但我认为你现在有一个很好的方向和比我更多的时间来理解它是如何工作的;)
Network
。激活该工具,刷新页面并修改请求以了解发生了什么。
It's also very easy to parse JSON with python: http://docs.python.org/library/json.html