python+chrome+docker运行环境配置

 

正常爬取网页不需要有浏览器支持,只要python配置相应的包就行。但是如果想要进行模拟登陆等功能,就需要有浏览器支持了。我采用的是selenium+bs4的模块,浏览器驱动采用的是chrome的webdriver,这个在selenium中有。

from selenium import webdriver
import time
from bs4 import BeautifulSoup

主要爬取过程很简单,这里就是列出几个关键。

首先是配置驱动浏览器

    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    #chrome_options.add_argument(r"user-data-dir=/usr/local")
    #chrome_options.add_argument("window-size=1024,768")
    # 添加沙盒模式
    chrome_options.add_argument("--no-sandbox")
    browser = webdriver.Chrome(chrome_options=chrome_options)
    #这里的driver就是上面配置好的browser浏览器对象,url为自己想访问的网址,这里指向登陆界面,下面是模仿登陆过程。
    driver.get(url)
    print(driver.current_url)
    
    # 进入登陆页面,输入账户名和密码,find_element_by_xpath用来定位标签,send_keys用来向标签输入内容,click()是点击动作,这是登陆模仿动作的关键步骤。网页内部也是重复这个工程
    driver.find_element_by_xpath('/html/body/div/div/form/div[3]/div[2]/input').send_keys(account)
    driver.find_element_by_xpath('/html/body/div/div/form/div[4]/div[2]/input').send_keys(password)
    # 点击登陆
    driver.find_element_by_xpath('/html/body/div/div/form/div[5]/button').click()
    #这两步是为了获取cookies,但是我没用到。
    driver.refresh()
    cookies = driver.get_cookies()
    # 等待加载登陆进入管理界面,这个一般都需要等待页面渲染,否则得不到想要的页面,这里是个坑,注意时间掌控,一半1s足以,这里为了保险起见,弄了各5秒。
    time.sleep(5)
    #这里是为了查看当前浏览器的网页
    res = driver.page_source
    print(res)
    # 点击节点管理进入节点页面
    driver.find_element_by_xpath("//body//h3/a").click()

爬取网页很简单就是配置驱动wedriver的docker环境很麻烦。主要是不知道怎么在docker中安装浏览器,参考的几个都是安装失败。结合同事的参考,终于把这个给搞定了,这里mark一下。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值