【问题标题】:Scraping javascript-generated data using Python使用 Python 抓取 javascript 生成的数据
【发布时间】:2012-04-20 14:26:19
【问题描述】:

我想使用 Python 抓取以下 url 的一些数据。 http://www.hankyung.com/stockplus/main.php?module=stock&mode=stock_analysis_infomation&itemcode=078340

这是关于公司信息的摘要。

我要抓取的内容未显示在第一页上。 通过单击名为“재무제표”的选项卡,您可以访问财务报表。然后点击名为“현금흐름표”的标签,您可以访问“现金流”。

我想抓取“现金流”数据。

但是,现金流数据是由 javascript 跨 url 生成的。 以下链接是隐藏的url,http://stock.kisline.com/compinfo/financial/main.action?vhead=N&vfoot=N&vstay=&omit=&vwidth=

现金流数据是通过向这个url提交一些选项值和cookie来生成的。

如您所见,第一个链接中的 itemcode=078340 表示股票代码,我想收集多达 1680 只股票来收集现金流数据。我想让它成为一个循环结构。

有没有好的方法来抓取现金流数据? 我试过scrapy,但scrapy很难应付我已经在使用的另一个抓取代码。

【问题讨论】:

  • 数据是通过ajax从服务器拉取还是以某种方式存储在html中(比如在JS变量中或data-中)?
  • 服务条款允许您这样做吗?
  • Tadeck,从服务器拉取数据。
  • @luke14free 这是一个报纸网站。并且数据对所有人免费开放,甚至您不必登录即可使用
  • 服务条款允许 ...什么???谁给了一个飞跃。

标签: javascript python screen-scraping web-scraping


【解决方案1】:

如果您需要 scape 使用 AJAX 更新的页面内容并且您不受此 AJAX 界面的控制,我将使用 Selenium 浏览器自动化器来完成该任务:

http://code.google.com/p/selenium/

  • Selenium 具有 Python 绑定

  • 它会启动一个真实的浏览器实例,因此它可以执行和抓取 100% 与您亲眼看到的相同的事情

  • AJAX 更新后通过 Selenium API 获取 HTML 文档内容

  • 使用lxml + xpath / CSS选择器将相关部分解析出文档

【讨论】:

  • 非常感谢。我要试试硒。
  • 我可以在最后用这个 lxml +xpath 部分替换 jquery(并按照其余步骤操作)吗?
  • Selenium 自带 CSS 选择器引擎(可能使用底层浏览器),所以你不再需要 jQuery 和 lxml 了
【解决方案2】:

还有dryscape(我写的一个库,所以推荐有点偏颇,很明显:)它使用基于Webkit 的快速内存浏览器进行导航。它也能理解 Javascript,但比 Selenium 轻得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-10
    • 2015-04-14
    • 2018-07-01
    • 2012-09-19
    • 1970-01-01
    相关资源
    最近更新 更多