【问题标题】:Run Javascript with Python (onclick)使用 Python 运行 Javascript (onclick)
【发布时间】:2015-07-25 12:22:43
【问题描述】:

如何运行我在 python 的 html 标记中找到的 javascript?

html 中有一个标签,其中包含在单击 (onclick) 后运行的 javascript。

示例如下:

<span id="Handy2">
    <span class="cust-type">0179... </span>
    <a id="dspphone2" style="cursor: pointer;" class="t-info" onclick="jQuery( Handy2 ).load( '/ajax/detail/displayphonenumber.php?coded=MDE3OS8gNjk2MTA5Mw--&amp;adno=140305860&amp;adsource=quoka+online&amp;catid=36_3210' )" data-trackl="Detail 36_3210">
        anzeigen
    </a>
</span>

我应该怎么做才能运行它并接收单击此按钮后可见的代码?

我主要使用 BeautifulSoup。

编辑:我知道如何使用 Selenium 来做到这一点,但我认为这太过分了。

【问题讨论】:

  • 这不是矫枉过正。要运行 JavaScript,您需要将其提供给 JavaScript 解释器,而在 Python 中执行此操作的最简单方法是使用 Selenium 之类的东西。
  • 不安全。可从任何地方调用(如果没有用户会话)。浪费服务器资源。将此数据放在页面内(隐藏输入等)并使用 javascript 调用。
  • HTML&lt;span id="Handy2"&gt;&lt;span class="cust-type"&gt;0179... &lt;/span&gt;&lt;a id="dspphone2" style="cursor: pointer;" class="t-info" onclick="jQuery( Handy2 ).load( '/timers.py/some_session_id/sometab/give_me_something' )" data-trackl="Detail 36_3210"&gt;anzeigen&lt;/a&gt;&lt;/span&gt;PY#! /usr/bin/python # -*- coding: utf-8 -*- import cgi ,cgitb;cgitb.enable() from os import environ import time addr = environ['REQUEST_URI'] print "Content-Type: text/html;charset=utf-8" print print addr+"__"+time.strftime("%H:%M:%S")

标签: javascript python html web-scraping


【解决方案1】:

你不能像上面已经提到的那样只在 Python 中运行它,你需要一个 JavaScript 解释器。在我看来,您只是想获取通过此 AJAX 调用加载的数据,您应该执行以下操作(这只是一个示例)

import urllib2
html = urllib2.urlopen('http://your_site_name.com/ajax/detail/displayphonenumber.php?coded=MDE3OS8gNjk2MTA5Mw--&adno=140305860&adsource=quoka+online&catid=36_3210').read()
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)

【讨论】:

    【解决方案2】:

    这只是一个小的 XHR 请求,它会在响应中返回您要查找的电话号码。自己试试吧:http://www.xxx.de/ajax/detail/displayphonenumber.php?coded=MDE3OS8gNjk2MTA5Mw--&adno=140305860&adsource=quoka+online&catid=36_3210 我会使用 xpath 选择器和正则表达式来获取您搜索的值。然后替换';'使用 '&' 并请求新的 url。

    【讨论】:

      【解决方案3】:

      无法从 python 直接运行 JavaScript。
      你能做的最好的就是运行 selenium 和 phantomJs 来抓取数据。

      以下链接可能对您有所帮助。 https://realpython.com/blog/python/headless-selenium-testing-with-python-and-phantomjs/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-11
        • 2016-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-09
        相关资源
        最近更新 更多