Web爬虫开发。为了实验的数据集,准备写个爬虫来搞。为了防止反爬机制,因而使用Selenium来处理。
Web爬虫开发
Selenium
环境
环境完全切换到Linux!Windows上总是一堆bug,打不开。
安装Selenium
1 | pip install selenium |
不过据说Edge的话可以装这个:(Selenium3版本,好久没更新了)
1 | pip install msedge-selenium-tools |
Selenium版本会低一点,但是确实能跑起来了。
安装浏览器与驱动
Chrome和ChromeDriver的版本要严格对应,所以最好一起下载,专门下一个用于自动化测试的Chrome。
Chrome for Testing availability (googlechromelabs.github.io)
ChromeDriver - WebDriver for Chrome - Version Selection (google.com)
驱动配置
Firefox浏览器驱动:geckodriver
Chrome浏览器驱动:chromedriver ,CNPM Binaries Mirror (npmmirror.com), taobao备用地址
IE浏览器驱动:IEDriverServer
Edge浏览器驱动:MicrosoftWebDriver
Opera浏览器驱动:operadriver
PhantomJS浏览器驱动:phantomjs
这里以Edge驱动为例子。
下载后压缩包,解压,得到msedgedriver.exe
。将这个文件放在D:\Tools\edgedriver\msedgedriver.exe
。然后再在环境变量配置这个文件夹路径,使得selenium
能够识别到。
Linux上配置驱动
Linux上用Chrome做例子。
How to Install Selenium Tools on Linux? - GeeksforGeeks
重点在于,拿到了chromedriver后,
1 | sudo mv chromedriver /usr/bin/chromedriver |
这样将chromedriver
放到bin
文件夹里面,使得进入PATH。
当然不想放也行,不过要额外配置一下PATH。
测试(Edge)
1 | from selenium import webdriver |
成功打开。
测试(Chrome)
1 | from selenium import webdriver |
最后也是打开了。一开始莫名其妙报错,现在莫名其妙又可以了。
Chrome配置参数
1 | from selenium import webdriver |
浏览器地址栏参数
在浏览器地址栏输入下列命令得到相应的信息
1 | about:version - 显示当前版本 |
有的指令没法用,不过先放在这里吧。
其他
1 | –user-data-dir=”[PATH]” |
Selenium-CheatSheet
Selenium Python 教程 - 知乎 (zhihu.com)
在Text等表单中填入数据
WebElement in Selenium: TextBox, Button, sendkeys(), click() (guru99.com)
寻找到WebElement
后,使用:
1 | send_keys("AAA") |
Wait until clickable
How To Resolve Element Click Intercepted Exception in Selenium? (qasource.com)
1 | WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); |
Demo1——爬取APP市场(Selenium3)
1 | from selenium import webdriver |
undetected-chromedriver
这应该是魔改后的自动化Chrome。
环境
- Ubuntu22 x64
- Chrome+Chromedriver linux64
安装
1 | pip install undetected-chromedriver |
使用
1 | import undetected_chromedriver as uc |
注意
使用pip install msedge-selenium-tools
安装的Selenium的版本还是3。但是Selenium已经进入4了,API有一些区别。
关闭Chrome下载检查
Google确实不行。用于自动测试的Chrome结果还搞了个下载检查,到头来还得我自己一个一个点击。
urllib3报错Proxy
1 | urllib3.exceptions.ProxySchemeUnknown: Proxy URL had no schme, should start with http:// or https:// |
这是因为Linux Shell里面的环境变量http_proxy
和https_proxy
设置有问题,没有补全使用的协议:
1 | https://127.0.0.1:port |
如果还有问题,那就只好用unset
指令在这个Shell里面关闭proxy了。
1 | unset http_proxy |
解决报错且没有错误信息⭐⭐⭐
需要将当前Terminal内设置好的http_proxy
代理和https_proxy
代理给清除!
参考
Selenium Python 教程 - 知乎 (zhihu.com)
Chrome for Testing availability (googlechromelabs.github.io)
ChromeDriver - WebDriver for Chrome - Version Selection (google.com)
The Selenium Browser Automation Project | Selenium
selenium启动Chrome配置参数问题 - 知乎 (zhihu.com)
Python 爬虫进阶篇——Selenium教程(一) - 知乎 (zhihu.com)
How to Install Selenium Tools on Linux? - GeeksforGeeks
- 本文作者: Taardis
- 本文链接: https://taardisaa.github.io/2023/09/07/Web爬虫开发/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!