chrome 插件 抓取网页qq聊天记录(讲道理开发Python项目——windows专业版)

优采云 发布时间: 2022-02-28 00:13

  chrome 插件 抓取网页qq聊天记录(讲道理开发Python项目——windows专业版)

  前言:

  在linux环境下开发Python项目是有道理的,但是我对windows情有独钟,所以我主要使用windows进行开发。但是项目一般要运行在ubuntu等Linux服务器下,难免会遇到一些问题,比如windows环境下multiprocessing.JoinableQueue不能阻塞主进程,docker服务也需要windows专业版完美运行,然后出现无法调用Linux内核执行corntab定时任务等问题……虽然最好的解决办法是安装Ubuntu虚拟机进行开发,或者直接换成mac电脑,但我本着能折腾永不放弃的态度寻求各种解决方案。

  WSL是我解决这些问题最大的帮助,它运行和启动都比虚拟机快。如果 WSL 能支持 docker 守护进程,那就更开心了……

  配置环境:

  windows下使用pycharm专业版,使用pycharm的Remote Python Interpreter函数调用WSL上的解释器,再配合Deployment实现代码同步。这样做的目的是在windows下编辑代码,调试,调用linux环境,所以需要Linux内核支持的功能也能流畅使用。

  如果你打算直接在WSL上运行写好的代码,看看WSL如何在windows上调用chromedriver和chrome浏览器,那么配置pycharm的方法可以直接跳过,直接进行下面的操作。

  配置方法:

  需要注意的是,WSL与windows共享ip和port,所以需要更改WSL的ssh端口,vim /etc/ssh/sshd_config ,修改Port为你想要的端口,我修改为23,退出wsl并重新打开WSL,sudo service ssh start,前提是你已经安装了ssh,而且Pycharm中的配置端口也要改成你改的那个,我用的IP是127.0.@ >0.@> 1、避免因更改局域网IP而导致重复配置的问题。说明为什么需要更改端口号,因为windows上的ssh使用的是22端口,而且WSL也开启了,所以会有冲突。

  配置完成后:注意Path mappings,如果执行代码告诉你no such dir….,说明你的mapping没有设置好,解释器和SFTP的mapping应该设置正确。另外,运行代码前请确认代码已经同步,因为运行代码其实就是WSL上的代码,可以设置代码自动同步或者保存时同步。

  

  

  

  骚操作:

  正题开始了,佩服自己的脑洞,竟然想到了这种操作……

  首先下载windows下的chromedriver.exe文件,放到windows下Python解释器安装目录的scripts文件中,下载地址:

  https://npm.taobao.org/mirrors/chromedriver 下载最新版

  

  下载最新的chrome浏览器,我的是64位的

  

  下面开始查看效果,先确认两个软件都可用,测试代码:

  from selenium import webdriver

#

driver = webdriver.Chrome(executable_path="C:/Program Files (x86)/Microsoft Visual Studio/Shared/Python36_64/Scripts/chromedriver.exe")

driver.save_screenshot("changcheng.png")

driver.get("http://www.baidu.com")

print(driver.page_source)

driver.quit()

  选择windows下的python解释器,运行上面的代码,看看浏览器是否调用成功,是否打印结果,是否正常退出,

  通常一切都应该没问题。

  如果使用 Pycharm 的远程功能将解释器替换为 WSL 上的解释器,请确认代码是否运行成功,并确保配置正常后再继续。

  如果直接从 WSL 命令行启动程序,则直接继续。

  执行代码:

  from selenium import webdriver

driver = webdriver.Chrome(executable_path="/mnt/c/Program Files (x86)/Microsoft Visual Studio/Shared/Python36_64/Scripts/chromedriver.exe") # mnt目录为文件共享目录, 子系统可以访问到windows文件

driver.save_screenshot("changcheng.png")

driver.get("http://www.baidu.com")

print(driver.page_source)

driver.quit()

  应该成功调用chrome是有道理的,并且一切都应该正常工作。

  最坏的情况应该是调用了chrome但是没有文本,并且没有退出,那么请手动退出,请检查您的任务管理器,如果有一个名为chromedriver的进程,请关闭它,然后检查您的WSL,是否正常,是否有错误信息,如果有,请退出WSL。再次执行代码。我的到现在都正常。

  结论:

  因为没有深入使用过,不知道会不会出现无法预料的问题。请自行判断,欢迎留言讨论。

  虽然show运行成功了,但是有个疑问,代码的运行环境是WSL->Linux,那么chromedriver.exe是在windows或者linux上执行的,如果是windows,那为什么代码是在linux上执行的,如果exe是在Linux上执行的,那么在windows上编译的exe真的可以在linux上运行吗?

  就算是这样,chromedriver在windows下怎么调用chrome浏览器……看来windows下运行的可能性更大,但是代码运行的时候不符合环境,请各位老大指点!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线