使用Selenium和Firefox无界面模式后台爬取新浪新闻“疫情”实时数据以及制作docker镜像

为了实时获取新浪新闻网页的实时数据,采用selenium爬虫方法;为了在没有图形界面系统而无法弹窗如服务器上运行,可以使用firefox或chrome的headless模式,而PhantomJS已经不被selenium支持了。

直接上代码:

#!/usr/bin/env python

import time

from selenium import web-driver
from selenium.webdriver.firefox.options import Options

options = Options()
options.add_argument('--headless')

driver = webdriver.Firefox(executable_path='./geckodriver', options=options) # executable_path须是geckodriver二进制文件的实际位置

driver.get("https://news.sina.cn/zt_d/yiqing0121")

time.sleep(1)

print(driver.find_element_by_xpath('//div[@class="t_tit"]').text)

e_item = driver.find_elements_by_xpath('//div[@class="t_item"]')

for e in e_item:
    print(e.find_element_by_tag_name('h5').text + ":" + e.find_element_by_tag_name('b').text + " 较昨日:" + e.find_element_by_tag_name('code').text)

driver.quit()

以上是一次性抓取网页上“确诊“、”疑似“、”死亡“、”治愈“以及分别与昨日比较”的8项数据和截止日期标题。
当然,可以基于以上代码使用计划任务或改造成一个无限循环等方式实时抓取数据,这里就自行改造吧,不举例了。
在这里插入图片描述在这里插入图片描述

既然有了浏览器的无界面模式,不用像很久以前使用selenium需依赖图形界面系统,就可以制作docker镜像,方便在不同平台(win/linux/mac/……)上移植了。

docker镜像制作
1、拉取基础镜像,这里使用centos系统镜像

docker pull centos  #会拉取当前最新镜像,目前是centos8操作系统

2、启动一个容器

docker run -dit centos:latest

3、进入容器

docker exec -it 容器id bash

容器中:
4、安装python和pip

yum install python3-pip

5、安装selenium

pip3 install selenium

6、安装火狐浏览器

yum install firefox

7、安装selenium的火狐浏览器驱动(也可以从别的地方下载,然后拷贝到容器里)

yum install git
git clone https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
tar -xvf geckodriver-v0.26.0-linux64.tar.gz

会得到geckodriver这个二进制文件,即直接使用这个文件

环境搭好后,就可以测试selenium了,可以使用上面的脚本测试,注意geckodriver的实际位置。
在这里插入图片描述
测试没有问题,将此容器做成新的镜像:

docker commit -m "selenium,centos8,firefox" -a "trf"  容器id selenium-centos:latest

-m 备注,-a 作者,镜像名称可以自定义

这样,在新的镜像生成的容器中就可以使用selenium和firefox的无界面模式(当然也可以做selenium和chrome的环境镜像)了。
而且,也可以利用这个新镜像作为基础镜像,使用dockerfile等制作自己程序需要的镜像。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值