![](https://csdnimg.cn/release/download_crawler_static/87640202/bg5.jpg)
62
第 3 章构建应用程序,发现低价的机票
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0
(Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/46.0.2490.80 Safari/537.36")
driver = webdriver.PhantomJS(desired_capabilities=dcap,
service_args=['--ignore-ssl-errors=true'])
driver.implicitly_wait(20)
driver.get(url)
我们需要向接收请求的服务器发送一个用户代理。你可以使用我在此列出的代理,或
者如果你愿意,也可以将其替换为自己的代理。进入到解析阶段的时候,这点变得尤为重
要。如果你在普通的浏览器中使用某代理来选择文档对象模型(DOM)元素,然后在代码
中传递了另一个不同的代理,那么你解析页面的时候也许会碰到问题,因为 DOM 可能是
与用户代理相关的。
你可以通过 Google 搜索“what is my user agent?”,来找到自己的用户代理。
如果你计划将其用于其他的爬虫,请复制这个信息,然后在上述代码中使用它。
运行上述代码之后,你可以使用下面这行代码来保存页面的截图。请检查这个截图,
以确保一切看起来正常。
driver.save_screenshot(r'flight_explorer.png')
如果一切都是按计划完成,你应该可以看到输出为 True,并且生成一个与所抓取页
面相关的图像文件。在普通的 Web 浏览器中,它看起来就像原有的页面。
接下来,我们将继续解析页面以提取定价信息。
3.3 解析 DOM 以提取定价数据
DOM 是形成网页结构的元素集合。如果你曾经查看过网页的源代码,你就已经看到了
DOM 的各个模块。它们包括例如 body、div、class 和 id 这样的元素和标签。我们需
要处理这些元素来提取所需的数据。
让我们来看看 Google 网页的 DOM。为了查看其内容,请在该页面上单击右键,并单
击“检查元素”。对于 Firefox 或 Chrome 浏览器,这个操作应该是相同的。这将打开开发
人员选项卡,允许你查看页面的源信息。打开之后,在左上角挑选元素选择器,并单击其
中一个价格栏跳转到相应的元素。如图 3-3 所示。