import pymongo
client = pymongo.MongoClient(host='localhost',port=27017)
db = client.test
collection = db.books import selenium
from selenium import webdriver
import time
options = webdriver.FirefoxOptions()
options.headless = True
browser = webdriver.Firefox(options=options)
page = 5
keyword = '爬虫' while True:
url = 'https://book.douban.com/subject_search?search_text='+ keyword + '&cat=1001&start=' + str(page*15)
browser.get(url)
print(url)
detail_elements = browser.find_elements_by_class_name('detail')
if detail_elements != []:
page += 1
else:
print("【没有更多的数据了,抓取结束】")
print("已抓取数据:", collection.count_documents({}), "条")
break
for detail_element in detail_elements:
title = detail_element.find_element_by_class_name('title-text').text
rate = detail_element.find_elements_by_class_name('rating_nums')
if rate == []:
rate = '暂无评分'
else:
rate = rate[0].text
profile = detail_element.find_element_by_xpath("//div[@class='meta abstract']").text
# print(title, rate, profile)
result = collection.insert_one({'title':title, 'rate':rate, 'profile':profile})
# print(result.inserted_id) browser.quit() for doc in collection.find({}):
print(doc)
collection.delete_many({}) # 避免数据积累
if collection.count_documents({}) == 0:
print("【数据库清理完成】")

【项目】Selenium和pymongo复习的更多相关文章

  1. python实战项目 — selenium登陆豆瓣

    利用selenium 模仿浏览器,登陆豆瓣 重点: 1. 要设置好 chromedriver配置与使用, chromedriver.exe 和 Chrome的浏览器版本要对应, http://chro ...

  2. ios项目中引用其他项目复习

    ios项目中引用其他开源项目,今天再次复习了,记个备注. 1. 将开源项目的.xcodeproj拖入项目frameworks 2. Build Phases下 Links Binary With Li ...

  3. Selenium系列(十二) - 自动化必备知识之CSS选择器的详细使用

    如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...

  4. 菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven)

    菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven) 2012-02-04 13:11 by 虫师, 11419 阅读, 5 评论, 收藏, 编辑 之前我就讲过一种方试来搭 ...

  5. java selenium webdriver实战 helloWord

    第一步:建立Maven项目 Selenium 支持 maven 工程,这会让你的工作更加简便. 用 Eclipse 建个 Maven 的工程,建成后,修改 pom.xml <dependenci ...

  6. Java基础再复习(继承、多态、方法内部类**、HashMap用法**、参数传递**)

    ###继承: package com.shiyan; public class Animal { public int legNum; //动物四肢的数量 //类方法 public void bark ...

  7. PyMongo官方文档翻译——VNPY

    PyMongo是MongoDB数据库的python模块 VNPY默认的数据库,没有采用SQL类型的数据库,而是采用No-Sql类型的MongoDB数据库, 对于想了解VNPY内部结构的童鞋,多多少少会 ...

  8. [翻译]PyMongo官方文档

    PyMongo官方文档翻译 周煦辰 2016-06-30 这是本人翻译的PyMongo官方文档.现在网上分(抄)享(袭)的PyMongo博客文章很多,一方面这些文章本就是抄袭的,谈不上什么格式美观,另 ...

  9. python3开发进阶-Django框架学习前的小项目(一个简单的学员管理系统)

    ''' 自己独立写一个学员管理系统 表结构: 班级表: -id -grade_name 学生表: -id -student_name -grade 关联外键班级表 老师表: -id -teacher_ ...

随机推荐

  1. java学习札记

    java学习札记 0x0 学习原因  本来打算大三再去跟着课程去学习java的,但是现在题目越来越偏向java,所以迫于无奈开启了java的学习篇章,同时也正好写个笔记总结下自己学习一门语言的流程. ...

  2. 使用fiddler模拟控制网速,实现网速慢。(丢包如何模拟)

    参考连接 https://blog.csdn.net/baidu_zhongce/article/details/46683323 参考连接2 https://www.jianshu.com/p/b9 ...

  3. c++ 指针做为参数和返回值

    指针参数 返回值是指针 一.指针作参数形式的函数 //计算x的平方 x*x void square(int *x) { int a=*x; *x=a*a; } 二.指针作返回值的函数 int *squ ...

  4. 解决mySQL数据库锁表问题。

    先用这条命令查询数据库阻塞的进程 SELECT * FROM information_schema.innodb_trx 找到后在根据下图这个字段:try_mysql_thread_id 作为这条数据 ...

  5. 安装sql server2017出现错误:Visual Studio 运行时"Microsoft visual c++2017 X64 Minimum Runtime - 14.10.25008"需要修复

    安装sql server 2017 Developer Edition时,安装选择“基本”,发生如下错误: 解决方法: 1.进入控制面板→程序中,找到“Microsoft visual c++2017 ...

  6. How do I copy files that need root access with scp

    server - How do I copy files that need root access with scp? - Ask Ubuntuhttps://askubuntu.com/quest ...

  7. web 应用常见安全漏洞

    1. SQL 注入 SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命令. SQL 注入漏洞属于后端的范畴,但前端也可做体验上的优化. 原因 当使用外部不可 ...

  8. flutter-开发总结

    ### 上拉加载下拉刷新 ``` import 'dart:async'; import 'package:flutter_easyrefresh/easy_refresh.dart'; import ...

  9. 详解volatile 关键字与内存可见性

    先来看一个例子: public class VolatileTest {            public static void main(String[] args) {           T ...

  10. 浅拷贝(Shallow Copy) VS 深拷贝(Deep Copy)

    首先,深拷贝和浅拷贝针对的是对象类型(对象,数组,函数) 浅拷贝指的是只是拷贝了对象的引用地址,彼此之间高耦合,一个改变,另一个可能也随之改变: 深拷贝是指只是完整的将变量的值拷贝过来,是一个新的对象 ...