[英]Python Web-Scraping data that's not hard-coded into the HTML
我正在尝试从insight.com获取定价数据。 这是一个示例页面 。
从那个页面,我想拉ListPrice。 我之前已经使用过请求和BeautifulSoup这样做了,但在这种情况下,价格将直接在HTML中,所以它很容易拉出来。 但是,Insight似乎从“webProduct.prices [0] .price”获取此价格数据,我认为这是一个javascript对象。
这是确切的HTML元素:
<p class="ips-price-contract">List price</p><p class="prod-price">{{- webProduct.prices[0].currency }} {{= numeral(webProduct.prices[0].price).format(InsightUtil.GetCurrencyFormat()) }}</p>
有没有办法可以用Python获得这个定价数据?
编辑:下面的解决方案
感谢下面的HarunErgül解决方案,我能够实现这一目标。 首先,我使用应用邮递员在那里工作。 这是完成的帖子的样子:
要将json有效负载转换为python,我首先将其格式化为python dict(例如将'null'替换为'None','true'和'false'替换为'True'和'False'等)然后将其设置为数据请求= json.dumps(数据)
处理启用javascript的页面的最佳方法是使用selenium和浏览器(有适用于所有真实浏览器的驱动程序,如chrome,firefox等,甚至是无头浏览器,如phantomjs)。 此堆栈将获取您的页面并运行与该页面关联的所有JavaScript。 然后,您可以从中获取已处理的源并从中提取数据(从现在开始{{- webProduct.prices[0].currency }} {{= numeral(webProduct.prices[0].price).format(InsightUtil.GetCurrencyFormat()) }}
将被实际价格取代)
driver.get(page)
page_source = driver.source
或者,您可以在实际浏览器中检查页面,监视其网络活动,找出页面为获取必要数据所做的api请求,并使用请求库复制这些数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.