Spider + Auto Process
最近有机会写了点爬虫,几年前写过一些数据爬虫,这一次完全不同,还需要加上自动操作完成一些机械流程,后来深入了解了一下selenium,简单说一下自动化流程操作吧,myspider项目可供学习参考,并且我也在不断学习,也会不断更新,README中有操作引导,推荐使用Conda环境隔离。
###启动代理窗体
我建议手动启动浏览器代理窗体,这样更可控,当然使用程序启动更为便捷。
shell/cmd> chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile(selenium路径)"
###使用代理窗体
# 重复使用浏览器代理窗体
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
# 创建Chrome浏览器对象,chromedriver需要放在chrome同级目录
browser = webdriver.Chrome('S:/Program Files (x86)/Google/Chrome/Application/chromedriver',
chrome_options=chrome_options)
# 带上已授权cookie
cookie = [
{'name': 'sessionId', 'value': 'dTkyMjUwMWQyZmRjMTNhZmM2NTkwN2I0M2M5ZmJhZDBm'}
]
for c in cookie:
new = dict(c, **{
"domain": ".12345.com",
"expires": "",
'path': '/',
'httpOnly': False,
'HostOnly': False,
'Secure': False,
})
browser.add_cookie(new)
# 发起浏览器请求
browser.get("http://www.12345.com/dist/index.html#/center")
上面的代码片段,会调用代理浏览器窗口,并且携带一些cookie发起一个请求,接下来你就可以使用。
element = browser.find_elements_by_class_name()
得到某个元素,来进行click等操作,更多获取元素的方式可以参考selenium网站,更灵活的方式我推荐使用。
find_element_by_xpath('html/body/div/div[1]/section[2]/div[3]')
来找到对应层级元素。
###场景
- 编写一些循环机械化的操作
- 构建更复杂的自动化测试流程