使用 mechanize 和 beautiful soup 在 python 中进行原始 HTML 与 DOM 抓取

2024-05-25

我正在尝试编写一个程序,作为示例,该程序将从该网页上刮掉最高价格:

http://www.kayak.com/#/flights/JFK-PAR/2012-06-01/2012-07-01/1adults http://www.kayak.com/#/flights/JFK-PAR/2012-06-01/2012-07-01/1adults

首先,我可以通过执行以下操作轻松检索 HTML:

from urllib import urlopen 
from BeautifulSoup import BeautifulSoup
import mechanize

webpage = 'http://www.kayak.com/#/flights/JFK-PAR/2012-06-01/2012-07-01/1adults'
br = mechanize.Browser()
data = br.open(webpage).get_data()

soup = BeautifulSoup(data)
print soup

但是,原始 HTML 不包含价格。浏览器会...它的事情(这里的澄清也可能对我有帮助)...并在构建 DOM 树时从其他地方检索价格。

我被引导相信 mechanize 会像我的浏览器一样运行并返回 DOM 树,我也被引导相信这就是我在查看时看到的,例如,Chrome 的开发者工具页面视图(如果我是对此不正确,我该如何获取存储价格信息的内容?)我需要告诉 mechanize 做什么才能看到 DOM 树?

一旦我可以将 DOM 树导入到 python 中,我需要做的其他事情就变得轻而易举了。谢谢!


Mechanize 和 Beautiful soup 是 Python 中无与伦比的网络抓取工具。

但您需要了解其含义:

Mechanize:它模仿网页上的浏览器功能。

BeautifulSoup:HTML 解析器,即使在 HTML 格式不正确时也能正常工作。

你的问题似乎是javascript。价格通过 ajax 调用填充javascript. Mechanize但是,它不执行 javascript,因此由 javascript 生成的任何内容对于机械化来说都是不可见的。

看看这个 :http://github.com/davisp/python-spidermonkey/tree/master http://github.com/davisp/python-spidermonkey/tree/master

这通过 js 执行对 mechanize 和 Beautiful soup 进行了包装。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 mechanize 和 beautiful soup 在 python 中进行原始 HTML 与 DOM 抓取 的相关文章

随机推荐

  • TopologyTestDriver 在 KTable 聚合上发送错误消息

    我有一个聚合在 KTable 上的拓扑 这是我创建的通用方法 用于根据我拥有的不同主题构建此拓扑 public static
  • 井字游戏代码有助于改进

    这是我必须检查玩家在井字棋游戏中获胜的代码 这是一个很长的 if 语句 可以改进 该板由 9 个图片框组成 我是一名 C 初学者 pBox Image Player players Player playerTurn getImage ch
  • 有没有好的 GLSL 哈希函数?

    所以我对这个问题的古老评论仍然得到了支持 GLSL rand 这一行代码的起源是什么 https stackoverflow com questions 12964279 whats the origin of this glsl rand
  • NodeJS Express 中每个请求的全局范围

    我有一个基本的快速服务器 需要在每个请求处理期间存储一些全局变量 更深入地说 请求处理涉及许多需要存储在变量中的操作 例如global transaction 当然 如果我使用global范围 每个连接都将共享其事务的信息 并且我需要一个全
  • 如何在 Laravel 中将秒转换为天小时分钟[重复]

    这个问题在这里已经有答案了 我想将以秒为单位的时间间隔转换为天小时分钟 我已经尝试过了 value 90060 CarbonInterval seconds value gt forHumans 我得到了输出 90060 seconds 我
  • C++,多语言/本地化支持

    向 C 程序添加多语言支持的最佳方法是什么 如果可能 应该从包含键值对 WelcomeMessage Hello s 之类的纯文本文件中读取语言 我想到了添加一个 localizedString key 函数来返回加载的语言文件的字符串 有
  • Azure 媒体服务播放器

    我觉得这是一个非常愚蠢的问题 但我的研究告诉我我必须创建自己的播放器 真的吗 我有一个来自 Azure 媒体服务的链接 发布 URL 如下所示 http streamvideotest streaming mediaservices win
  • 使用 Bouncy Castle 重建 ED25519 按键 (Java)

    Bouncy Castle 的最新 测试版 版本 bcprov jdk15on 161b20 jar 支持 ED25519 和 ED448 EC 加密以进行签名 我设置了这个完整的工作示例 它按预期工作 我的问题 我是否正确重建了私钥和公钥
  • 桨在移动时留下痕迹(Pygame Pong 游戏)[重复]

    这个问题在这里已经有答案了 我的游戏中的球拍有问题 每次我试图移动它时 桨都会留下一条 痕迹 我想这是因为我的代码没有删除旧位置的前一个桨 如果是的话怎么删除之前的呢 我应该使用blit Code import pygame sys ran
  • 在没有 SurfaceView 的 Android 上获取 GPU 信息

    在Android上 有没有一种方法可以在不创建SurfaceView的情况下获取GPU信息 我不想使用 OpenGL 绘制任何内容 但我只需要获取硬件信息 例如供应商 OpenGL ES 版本 可用扩展等 抱歉 我不知道如何在 Androi
  • CodeIgniter 3 - 在控制器中支持 API 和 Web 请求?

    我目前正在使用 CodeIgniter3 应用程序 并为标准的类似博客系统奠定了基础 该结构是标准 CI 用户请求页面 页面加载控制器方法 控制器方法从其模型调用任何相关的数据库函数 然后加载视图 不过 我还希望能够通过 API 访问此视图
  • 将对象传递给jquery中的回调函数

    我最近正在开发小型聊天模块 该模块需要不断检查服务器是否有新消息 我正在向服务器发送 ajax 请求 服务器将保持连接 直到找到新消息 长轮询 Code var chatController function other variable
  • WPF 中的 IWin32Window

    我有一个 excel AddIn 它公开 IWin32Window 作为它的主 UI 我想显示一个使用它作为父窗口的 WPF 窗口 我该如何去做呢 您可以使用窗口互操作助手 http msdn microsoft com en us lib
  • 获取 403 - Google 服务帐户被禁止

    我正在尝试获取 Google 服务帐户的访问令牌 以下是我的代码 String SERVICE ACCOUNT EMAIL email protected cdn cgi l email protection List scope new
  • 将mysql数据导入kubernetes pod

    有谁知道如何将我的 dump sql 文件中的数据导入到 kubernetes pod 中 直接 与处理 docker 容器的方式相同 docker exec i container name mysql uroot password se
  • 有没有类似RegexBuddy的在线正则表达式分析器? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个在线实用程序 可以美化正则表达式并向其添加解释性注释 有吗 我喜欢在线工具 http regexr com http reg
  • HashMap何时以及如何将桶从链表转换为红黑树? [复制]

    这个问题在这里已经有答案了 我正在研究 java 8 功能 发现当存储桶上的条目集数量增加时 哈希图使用红黑树而不是链表 但是 这是否不需要密钥是可比较的或存在某种密钥排序以及这是如何工作的 这种转变何时真正发生以及如何发生 当有at le
  • 卷曲:参数列表太长

    我想通过 Sparkpost API 使用curl post 发送一封附有pdf 文件的电子邮件 插入我使用的 pdf 我的 test pdf 约为 200KB data cat test pdf base64 wrap 0 但不知怎的 这
  • Laravel 总结雄辩集

    如何对已预先加载的数据集求和 这是我的表结构 regions table Field Type Null Key Default Extra id int 10 unsigned NO PRI NULL
  • 使用 mechanize 和 beautiful soup 在 python 中进行原始 HTML 与 DOM 抓取

    我正在尝试编写一个程序 作为示例 该程序将从该网页上刮掉最高价格 http www kayak com flights JFK PAR 2012 06 01 2012 07 01 1adults http www kayak com fli