Python 手动导航时抓取网页

Python 手动导航时抓取网页,python,web-scraping,mechanize,Python,Web Scraping,Mechanize,当用户手动浏览网页时,有没有一种方法可以使用某些库或方法实时地抓取网页?我知道的大多数scraper,比如创建一个模拟浏览器的浏览器对象——当然这不是我想要的,因为如果我打开一个浏览器,它将不同于mechanize创建的浏览器 如果没有解决方案,我的问题是我想从HTML5游戏中提取一些元素来制作某种智能代理。我将不详细介绍,但我怀疑,如果其他人将来也尝试这样做(或与真实用户进行实时抓取),解决方案也可能对他们有用 提前谢谢 根据您的用例,您可以设置代理或其他形式的代理,并将其配置为记录所有流量,

当用户手动浏览网页时,有没有一种方法可以使用某些库或方法实时地抓取网页?我知道的大多数scraper,比如创建一个模拟浏览器的浏览器对象——当然这不是我想要的,因为如果我打开一个浏览器,它将不同于mechanize创建的浏览器

如果没有解决方案,我的问题是我想从HTML5游戏中提取一些元素来制作某种智能代理。我将不详细介绍,但我怀疑,如果其他人将来也尝试这样做(或与真实用户进行实时抓取),解决方案也可能对他们有用


提前谢谢

根据您的用例,您可以设置代理或其他形式的代理,并将其配置为记录所有流量,然后指示浏览器使用它。然后你会不知怎么把那根木头刮掉

同样,如果您可以控制路由器,则可以在那里配置捕获和日志记录,例如使用
tcpdump
。当然,这不会解密加密的流量

如果您只使用一个浏览器,可能有一种方法可以通过自定义浏览器插件指示它在每个操作中执行某些操作,但我猜您可能会遇到很多安全模型问题

HTML5游戏的问题在于,它的大多数“导航”通常都是使用大量Javascript完成的。Javascript通常会做很多事情——操纵DOM,触发新内容的请求以适应DOM,等等

因此,您最好研究操作系统级别或浏览器级别的脚本服务,这些服务可以“驱动”键盘和鼠标事件、截图,甚至可能拍摄当前页面DOM的快照并进行查询


您可以研究类似的浏览器自动化和测试框架。

根据您的用例,您可以设置代理或其他形式的代理,并将其配置为记录所有流量,然后指示您的浏览器使用它。然后你会不知怎么把那根木头刮掉

同样,如果您可以控制路由器,则可以在那里配置捕获和日志记录,例如使用
tcpdump
。当然,这不会解密加密的流量

如果您只使用一个浏览器,可能有一种方法可以通过自定义浏览器插件指示它在每个操作中执行某些操作,但我猜您可能会遇到很多安全模型问题

HTML5游戏的问题在于,它的大多数“导航”通常都是使用大量Javascript完成的。Javascript通常会做很多事情——操纵DOM,触发新内容的请求以适应DOM,等等

因此,您最好研究操作系统级别或浏览器级别的脚本服务,这些服务可以“驱动”键盘和鼠标事件、截图,甚至可能拍摄当前页面DOM的快照并进行查询


您可能会研究类似的浏览器自动化和测试框架。

我不确定这是否适用于您的情况,但可以使用PyQt创建一个简单的web浏览器,该浏览器将与HTML5一起工作,并且可以从中捕获实时用户玩游戏时发生的情况


我已经将PyQt用于一个简单的浏览器窗口(用于完全不同的应用程序),它似乎可以处理简单的示例HTML5游戏。如何深入了解游戏的细节是PyQt专家的问题,不是我。

我不确定这是否适用于您的情况,但可以使用PyQt创建一个简单的web浏览器,该浏览器将与HTML5一起工作,并且可以从中捕获实时用户玩游戏时发生的情况


我已经将PyQt用于一个简单的浏览器窗口(用于完全不同的应用程序),它似乎可以处理简单的示例HTML5游戏。如何深入研究游戏的细节是PyQt专家的问题,而不是我。

谢谢-我在看计算机视觉类的东西,但如果不是必须的话,我不想进入其中。就我的情况而言,这是我需要搜集的一条信息,我可能可以使用浏览器插件来完成这项工作,但我按照建议研究了SOCKS,如果其他人没有这个选项,它看起来是一个不错的选择。Selenium和其他浏览器测试框架可能比SOCKS选项更容易,应该把这些放在第一位。我认为您可以使用许多不同的语言来驱动Selenium和其他语言——非常确定它们有python、perl、C#、ruby等的钩子。。。我的猜测是,你在寻找某些对象的存在或不存在,窥视DOM看看它们是否存在可能比解析HTML、JavaScript和其他流量并推断发生了什么更容易。另一方面,如果你的游戏有一个定义良好的易于阅读的非加密协议,那么代理是很好的。谢谢你-我在看计算机视觉类型的东西,但如果我不需要的话,我不想进入其中。就我的情况而言,这是我需要搜集的一条信息,我可能可以使用浏览器插件来完成这项工作,但我按照建议研究了SOCKS,如果其他人没有这个选项,它看起来是一个不错的选择。Selenium和其他浏览器测试框架可能比SOCKS选项更容易,应该把这些放在第一位。我认为您可以使用许多不同的语言来驱动Selenium和其他语言——非常确定它们有python、perl、C#、ruby等的钩子。。。我的猜测是,你在寻找某些对象的存在或不存在,窥视DOM看看它们是否存在可能比解析HTML、JavaScript和其他流量并推断发生了什么更容易。另一方面,如果你的游戏有一个定义良好的易于阅读的非加密协议,那么代理是很好的。谢谢,我将不得不研究它一些