我正在尝试编写一个python脚本,从一个网站解析一个元素并简单地打印它。在
如果没有selenium
的webdiver
,我不知道如何实现这一点,以便打开一个处理脚本的浏览器来正确显示网站。在
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://groceries.asda.com/asda-webstore/pages/landing/home.shtml#!product/910000800509')
content = browser.page_source
print(content[42000:43000])
browser.close()
这只是一个粗略的草稿,它将打印内容,包括感兴趣的元素<span class="prod-price-inner">£13.00</span>
。在
如果不打开浏览器,甚至根本没有浏览器,我怎么可能得到感兴趣的元素呢?在
编辑:我以前尝试过使用urllib
或bash
wget
,它们都缺乏必要的javascript解释。在
如其他答案所述,此网页需要javascript来呈现内容,因此您不能简单地使用lxml、Beautiful Soup或类似的库来获取和处理页面。但是有一种更简单的方法来获取你想要的信息。在
我注意到您提供的链接以结构化的方式从内部API获取数据。产品编号似乎是基于url的
910000800509
。如果您查看Chrome dev tools(或浏览器的等效dev tools)中的networking选项卡,您会看到有一个GET请求正在向以下URL发出:http://groceries.asda.com/api/items/view?itemid=910000800509。在只需使用json和requests模块就可以发出这样的请求:
这还允许您访问有关产品的许多其他信息,因为请求返回一些带有产品详细信息的JSON。在
检查完要分析的页面后:
http://groceries.asda.com/asda-webstore/pages/landing/home.shtml#!product/910000800509
我意识到它只在启用
javascript
时显示内容,基于此,您需要使用real浏览器。在结论:
如果您需要实现自动化,那么方法是:
selenium
相关问题 更多 >
编程相关推荐