浏览器抓取网页(windows下的chrome浏览器(组图))

优采云 发布时间: 2022-02-14 07:13

  浏览器抓取网页(windows下的chrome浏览器(组图))

  问题总结:

  在WSL(windows子系统)上调用windows下的chromedriver和chrome浏览器进行自动化测试或爬取网页内容,运行成功。但是有个疑问,代码的运行环境是WSL->Linux,那么chromedriver.exe是在windows还是linux上执行的呢?如果是windows,为什么代码是在linux上执行的?如果exe在linux上执行,那么linux真的可以在windows exe上运行编译,即使是这样,chromedriver如何调用windows下的chrome浏览器……看来windows下运行的可能性更大,但是不符合代码运行环境,请指点!

  前言:

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

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

  配置环境:

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

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

  配置方式:/pipisorry/article/details/52269952

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

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

  

  

  

  破坏行动:

  正题开始,佩服我的脑洞,能想到这种操作……

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

  /mirrors/chromedriver 下载最新版本

  

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

  

  我们开始检查效果,先确认两个软件都可以,测试方法:

  从硒导入网络驱动程序

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

  driver.get("")

  打印(driver.page_source)

  driver.quit()

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

  正常情况下应该没问题的。

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

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

  执行代码:

  从硒导入网络驱动程序

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

  driver.get("")

  打印(driver.page_source)

  driver.quit()

  按理说应该是chrome调用成功了,一切正常。

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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线