python3 selenium模拟登陆斗鱼提取数据保存数据库
# coding=utf-8
from selenium import webdriver
import json
import time
import pymongo
class Douyu:
def __init__(self):
self.driver = webdriver.Chrome()
# 发送首页请求
self.driver.get("https://www.douyu.com/directory/all")
self.host = '127.0.0.1'
self.port = 27017
self.DBname = 'douyu'
def get_content(self):
time.sleep(3)
li_list = self.driver.find_elements_by_xpath('//ul[@id="live-list-contentbox"]/li')
# print(li_list)
contents = []
# 遍历房间列表
for i in li_list:
item = {}
# 获取房间图片
item['img'] = i.find_element_by_xpath('./a//img').get_attribute("src")
# 获取房间名字
item['title'] = i.find_element_by_xpath('./a').get_attribute("title")
# 获取房间分类
item['category'] = i.find_element_by_xpath('./a/div[@class="mes"]/div/span').text
# 获取主播名字
item['name'] = i.find_element_by_xpath("./a/div[@class='mes']/p/span[1]").text
# 观看人数
item['watch_num'] = i.find_element_by_xpath("./a/div[@class='mes']/p/span[2]").text
# print(item)
contents.append(item)
return contents
# 保存到MongoDB
def save_content(self, contents):
# 创建MongoDB连接
client = pymongo.MongoClient(host=self.host, port=self.port)
# 指向指定的数据库
mdb = client[self.DBname]
self.post = mdb[self.DBname]
self.post.insert(contents)
# 保存到本地
# def save_content(self, contents):
# with open("douyu.json", "a") as f:
# for content in contents:
# json.dump(content, f, ensure_ascii=False, indent=2)
# f.write(',\n')
def run(self):
# 1.发送首页请求
# 2.获取首页信息
contents = self.get_content()
# 3.保存内容
self.save_content(contents)
# 4.循环 点击下一页按钮,直到下一页对应的class名字不再是"shark-pager-next"
# 判断有没有下一页
while self.driver.find_element_by_class_name("shark-pager-next"):
# 5.点击下一页按钮
self.driver.find_element_by_class_name("shark-pager-next").click()
# 6.获取下一页的内容
contents = self.get_content()
# 7.保存内容
self.save_content(contents)
if __name__ == '__main__':
douyu = Douyu()
douyu.run()
python3 selenium模拟登陆斗鱼提取数据保存数据库的更多相关文章
- Python3 使用selenium库登陆知乎并保存cookie为本地文件
Python3 使用selenium库登陆知乎并保存cookie为本地文件 学习使用selenium库模拟登陆知乎,并将cookie保存为本地文件,然后供以后(requests模块)使用,用selen ...
- selenium 模拟登陆豆瓣,爬取武林外传的短评
selenium 模拟登陆豆瓣,爬去武林外传的短评: 在最开始写爬虫的时候,抓取豆瓣评论,我们从F12里面是可以直接发现接口的,但是最近豆瓣更新,数据是JS异步加载的,所以没有找到合适的方法爬去,于是 ...
- php中CURL技术模拟登陆抓取数据实战,抓取某校教务处学生成绩。
这两天有基友要php中curl抓取教务处成绩的源码,用于微信公众平台的开发.下面笔者只好忍痛割爱了.php中CURL技术模拟登陆抓取数据实战,抓取沈阳工学院教务处学生成绩. 首先,教务处登录需要验证码 ...
- Selenium模拟登陆百度贴吧
Selenium模拟登陆百度贴吧 from selenium import webdriver from time import sleep from selenium.webdriver.commo ...
- Python3.x:定时获取页面数据存入数据库
Python3.x:定时获取页面数据存入数据库 #间隔五分钟采集一次数据入库 import pymysql import urllib.request from bs4 import Beautifu ...
- 使用selenium模拟登陆淘宝、新浪和知乎
如果直接使用selenium访问淘宝.新浪和知乎这些网址.一般会识别出这是自动化测试工具,会有反制措施.当开启开发者模式后,就可以绕过他们的检测啦.(不行的,哭笑) 如果网站只是对windows.na ...
- Python爬虫 —— 知乎之selenium模拟登陆获取cookies+requests.Session()访问+session序列化
代码如下: # coding:utf-8 from selenium import webdriver import requests import sys import time from lxml ...
- 使用selenium模拟登陆新浪微博
1.selenium基本使用 1.selenium安装及基本操作 selenium是一个自动化测试工具,它支持各种浏览器,包括Chrome,Safari,Firefox等主流界面浏览器驱动,也包括Ph ...
- 验证码破解 | Selenium模拟登陆微博
模拟登陆微博相对来说,并不难.验证码是常规的5个随机数字字母的组合,识别起来也比较容易.主要是用到许多Selenium中的知识,如定位标签.输入信息.点击等.如对Selenium的使用并不熟悉,请先移 ...
随机推荐
- 几个 Cookie 操作例子的分析
MDN 上提供了操作 Cookie 的若干个例子,也有一个简单的 cookie 框架,今天尝试分析一下,最后是 jquery-cookie 插件的分析. document.cookie 的操作例子 例 ...
- bzoj3624(铺黑白路)(并查集维护)
题意网上自己随便找,绝对是找的到的. 题解:(白边表示鹅卵石路,黑边表示水泥路)这道题的解法,先考虑将黑边所有都先连起来,组成一个又一个的联通块,然后用白边去连, 如果可以联通的话,就用白边去代替黑边 ...
- 1042 数字0-9的数量 1050 循环数组最大子段和 1062 序列中最大的数 1067 Bash游戏 V2 1092 回文字符串
1042 数字0-9的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 给出一段区间a-b,统计这个区间内0-9出现的次数. 比如 10-19,1出现11次 ...
- Java并发(一、概述)
离上次写博客又隔了很久,心中有愧.在我不断使用Java的过程中,几乎都是拿来就用,就Java并发这块我还没有系统的梳理过,趁着国庆有空余时间,把它梳理一遍.以下部分内容参考相关书籍,以作学习之用,特此 ...
- Theano学习-scan循环
\(1.Scan\) 通用的一般形式,可用于循环 减少和映射(对维数循环)是特殊的 \(scan\) 对输入序列进行 \(scan\) 操作,每一步都能得到一个输出 \(scan\) 能看到定义函数的 ...
- PHP的ntohl网络字节序函数及相关知识
PHP与C服务器的socket通信,在做数据转换的时候,PHP没有提供对应将网络字节序和机器字节序相互转换的程序,但是根据函数的意义,我们可以做相应的转换来实现这一函数: function ntohl ...
- Ubuntu16.04 install OpenJDK8
1.按Ctrl + Alt + T打开终端.打开后,运行下面的命令来添加PPA:sudo add-apt-repository ppa:openjdk-r/ppa2.之后,更新系统包缓存并安装Open ...
- Python实战之Selenium自动化测试web登录
#!/usr/bin/env python3 # -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver ...
- Access-Control-Allow-Origin与Ajax跨域
问题 在某域名下使用Ajax向另一个域名下的页面请求数据,会遇到跨域问题.另一个域名必须在response中添加 Access-Control-Allow-Origin 的header,才能让前者成功 ...
- sa账户和密码丢失如何找回
来自:http://www.cnblogs.com/xred/archive/2012/03/09/2386185.html 在网上看了很多如何修改SQLServer2005的密码的方法.大多数都是转 ...