Spider + Auto Process

cat_recycle.gif

最近有机会写了点爬虫,几年前写过一些数据爬虫,这一次完全不同,还需要加上自动操作完成一些机械流程,后来深入了解了一下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]')

来找到对应层级元素。


###场景

  • 编写一些循环机械化的操作
  • 构建更复杂的自动化测试流程