Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Python使用javascript加载.html来解析web?_Javascript_Python - Fatal编程技术网

如何通过Python使用javascript加载.html来解析web?

如何通过Python使用javascript加载.html来解析web?,javascript,python,Javascript,Python,我正在使用Python解析一个拍卖网站 如果我使用浏览器打开此网站,它将转到加载页面,然后自动跳转到搜索结果页面 如果使用urllib2打开网页,read()方法只返回加载页面 是否有任何python包可以等到所有内容加载完毕,然后read()方法返回所有结果 谢谢。搜索页面是如何工作的?如果它使用Ajax加载任何内容,您可以执行一些基本的反向工程,并使用Firebug的网络面板或Wireshark查找涉及的URL,然后使用urllib2加载这些URL 如果比这更复杂,您可以模拟JS手动执行的操

我正在使用Python解析一个拍卖网站

如果我使用浏览器打开此网站,它将转到加载页面,然后自动跳转到搜索结果页面

如果使用urllib2打开网页,read()方法只返回加载页面

是否有任何python包可以等到所有内容加载完毕,然后read()方法返回所有结果


谢谢。

搜索页面是如何工作的?如果它使用Ajax加载任何内容,您可以执行一些基本的反向工程,并使用Firebug的网络面板或Wireshark查找涉及的URL,然后使用urllib2加载这些URL

如果比这更复杂,您可以模拟JS手动执行的操作,而无需加载和解释JavaScript。这完全取决于搜索页面的工作方式


最后,我知道有一些方法可以在没有浏览器的页面上运行脚本,因为这是一些功能测试套件所做的,但我猜这可能是最复杂的方法。

在跟踪拍卖网站源代码后,我发现它使用.php创建加载页面并重定向到结果页面。反向工程无法找到真正的URL,因为它与加载页面的URL相同

还有@Manoj Govindan,我试过机械化,但即使我加上

br.set_handle_refresh(True)
br.set_handle_redirect(True)
它仍在阅读加载页面

在www上搜索了几个小时后,我找到了一个可能的解决方案:使用pywin32

import win32com.client
import time

url = 'http://search.ruten.com.tw/search/s000.php?searchfrom=headbar&k=halo+reach'
ie = win32com.client.Dispatch("InternetExplorer.Application")
ie.Visible = 0
ie.Navigate(url)

while 1:
  state = ie.ReadyState
  if state == 4:
    break
    time.sleep(1)

print ie.Document.body.innerHTML
然而,这只适用于win32平台,我正在寻找一种跨平台的解决方案


如果有人知道如何处理这个问题,请告诉我。

您考虑过使用Mechanize吗?谢谢重播。问题是,我还没有学会javscript,因此逆向工程对我来说很难。因此,我询问是否有任何包可以检查网页状态,如xmlhttprequest.readyState==4。我尝试过机械化,但这在ajax页面中似乎没用。现在看来,学习javascript是最好的解决方案……@seed。你不需要知道javascript。只需使用firebug查看ajax请求的内容。然后使用urllib2加载它。