今天记录利用selenium从excel中读取内容,将内容输入到谷歌浏览器中,并搜索得到结论数,然后再将结论数写入excel中的案例。
思路:
1,利用selenium模拟用户操作浏览器,由于是繁体成语,且是在谷歌浏览器中进行搜索,先开启代理,然后将谷歌浏览器默认语言设置为中文繁体(设置->高级->语言),同时在谷歌浏览器的主页,还要将浏览器页面的展示设置为繁体;
2,设置完之后,关闭Chrome浏览器,进入电脑C:\Users\AppData\Local\Google\Chrome路径下,复制一份User Data命名为User Data1,这样在selenium操作浏览器时调用User Data1的路径,即能保证测试浏览器保持繁体的配置,又不影响本身谷歌浏览器的使用(如果直接使用User Data,又在人工使用谷歌浏览器,会有端口占用的报错)
opt = webdriver.ChromeOptions()
opt.add_argument(f"--user-data-dir={
os.path.expanduser('~')}\\AppData\\Local\\Google\\Chrome\\User Data1")
# 通过--user-data-dir=的方式来使得chromedriver的配置和本地浏览器相同(本地已设置浏览器语言为繁体,需要保留这个配置)
s = Service('chromedriver.exe')
# 将chromedriver.exe放到脚本所在路径下,方便selenium操作浏览器时不影响本地原本浏览器的使用
3,然后就是调用excel表格,读取表格中的成语,然后搜索成语的释义,近义词等,再将这些结果写入新的excel表格:
4,为了防止爬取过程中网络不稳定或者其他原因导致第一次爬取失败,增加了重试机制和断点续传,重试机制为了防止第一遍爬取失败,断点续传用于避免爬取失败后,已爬取过的数据不用再次爬取。具体实现流程见代码注释
全部代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities