这几天在学习selenium,顺便用selenium + python写了一个比较简陋的爬虫,现附上源码,有时间再补充补充:

  1. from selenium import webdriver
  2. from selenium.webdriver.support.wait import WebDriverWait
  3. from selenium.webdriver.support import expected_conditions as EC
  4. from selenium.webdriver.common.by import By
  5. import os
  6.  
  7. class DouBan_Movies:
  8.  
  9. def __init__(self):
  10. #初始化chromedriver
  11. self.driver = webdriver.Chrome()
  12. #调用函数进入豆瓣电影top250官网
  13. self.__enter_douban()
  14. #在当前目录下建一个文本文件用来写入电影信息
  15. self.fs = open(os.getcwd() + r"\douban_top250.txt", "w+", encoding="utf-8")
  16.  
  17. def __enter_douban(self):
  18. #打开百度首页
  19. self.driver.get("http://www.baidu.com")
  20. #窗口最大化
  21. self.driver.maximize_window()
  22. #百度首页输入框的元素表达式
  23. input_id = "kw"
  24. #设置显性等待,等待百度首页输出框的出现
  25. WebDriverWait(self.driver, 3, 0.3).until(EC.visibility_of_element_located((By.ID, input_id)))
  26. #定位百度输入框并输入豆瓣电影Top250
  27. self.driver.find_element_by_id(input_id).send_keys("豆瓣电影Top250")
  28. #定位百度一下按钮并点击
  29. self.driver.find_element_by_id("su").click()
  30. #第一条搜索结果的元素表达式
  31. top250_css = "div[id='1'] h3 a"
  32. #设置显性等待,等待第一条搜索结果的出现
  33. WebDriverWait(self.driver, 5, 0.3).until(EC.visibility_of_element_located((By.CSS_SELECTOR, top250_css)))
  34. #获得当前浏览器的所有窗口句柄
  35. windows = self.driver.window_handles
  36. #定位到第一条搜索结果并点击
  37. self.driver.find_element_by_css_selector(top250_css).click()
  38. #设置显性等待,等待新窗口的出现
  39. WebDriverWait(self.driver, 10, 0.3).until(EC.new_window_is_opened(windows))
  40. #获得当前浏览器的所有窗口句柄
  41. windows = self.driver.window_handles
  42. #切换到新的窗口
  43. self.driver.switch_to.window(windows[-1])
  44.  
  45. def __get_datas(self):
  46. if self.page_num == 1:
  47. #得到标题
  48. title = self.driver.find_element_by_xpath("//div[@id='content']//h1").text
  49. #打印标题
  50. print(title)
  51. self.fs.write(title + "\r\n")
  52. #获得当前页面电影信息的元素对象的列表,总共有25条
  53. movies_list = self.driver.find_elements_by_xpath("//ol//li")
  54. for element in movies_list:
  55. print(element.text + "\n")
  56. self.fs.write(element.text + "\r\n")
  57.  
  58. def get_all_pages(self):
  59. self.page_num = 1
  60. while self.page_num < 26:
  61. self.__get_datas()
  62. print("-------------第{0}页-----------\n".format(self.page_num))
  63. self.fs.write("-------------第{0}页-----------\n".format(self.page_num))
  64. self.page_num += 1
  65. #关闭文件
  66. self.fs.close()
  67.  
  68. douban_movies = DouBan_Movies()
  69. douban_movies.get_all_pages()

控制台输出

保存到文件

利用selenium爬取豆瓣电影Top250的更多相关文章

  1. scrapy框架 + selenium 爬取豆瓣电影top250......

    废话不说,直接上代码..... 目录结构 items.py import scrapy class DoubanCrawlerItem(scrapy.Item): # 电影名称 movieName = ...

  2. urllib+BeautifulSoup无登录模式爬取豆瓣电影Top250

    对于简单的爬虫任务,尤其对于初学者,urllib+BeautifulSoup足以满足大部分的任务. 1.urllib是Python3自带的库,不需要安装,但是BeautifulSoup却是需要安装的. ...

  3. python2.7爬取豆瓣电影top250并写入到TXT,Excel,MySQL数据库

    python2.7爬取豆瓣电影top250并分别写入到TXT,Excel,MySQL数据库 1.任务 爬取豆瓣电影top250 以txt文件保存 以Excel文档保存 将数据录入数据库 2.分析 电影 ...

  4. scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250

    scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...

  5. scrapy爬取豆瓣电影top250

    # -*- coding: utf-8 -*- # scrapy爬取豆瓣电影top250 import scrapy from douban.items import DoubanItem class ...

  6. 一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用

    学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺. 本文通过爬取豆瓣top250电影学习python requests的使用. 1.准备工作 在pycharm中安装request库 ...

  7. python 爬虫&爬取豆瓣电影top250

    爬取豆瓣电影top250from urllib.request import * #导入所有的request,urllib相当于一个文件夹,用到它里面的方法requestfrom lxml impor ...

  8. 【转】爬取豆瓣电影top250提取电影分类进行数据分析

    一.爬取网页,获取需要内容 我们今天要爬取的是豆瓣电影top250页面如下所示: 我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西.直接进入主题吧! 知道我们需要的内容在哪里了, ...

  9. Scrapy中用xpath/css爬取豆瓣电影Top250:解决403HTTP status code is not handled or not allowed

    好吧,我又开始折腾豆瓣电影top250了,只是想试试各种方法,看看哪一种的方法效率是最好的,一直进行到这一步才知道 scrapy的强大,尤其是和selector结合之后,速度飞起.... 下面我就采用 ...

随机推荐

  1. VS的编译选项

    转载下,对于VS的编译选项介绍蛮清楚的!! 1. 静态链接库.动态链接库.CRT.STL 我们要到一个函数,要么是需要该函数的源代码,要么是知道该函数的声明并有该函数的实现,这里的“实现”又分为静态链 ...

  2. 浅析TCP/IP

    TCP/IP概述 TCP/IP起源于1969年美国国防部(DOD:The United States Department Of Defense)高级研究项目管理局(APRA:AdvancedRese ...

  3. python并发编程&IO模型

    一 IO模型介绍 为了更好地了解IO模型,可先回顾下:同步.异步.阻塞.非阻塞 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(n ...

  4. springboot整合Ehcache

    首先引入maven包: <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  5. IDEA创建Tomcat8源码工程流程

    上一篇文章的产出,其实离不开网上各位大神们的辅助,正是通过他们的讲解,我才对Tomcat的结构有了更进一步的认识. 但在描述前后端交互的过程中,还有很多细节并没有描述到位,所以就有了研究Tomcat源 ...

  6. PAT 天梯赛 L2-024. 部落 【并查集】

    题目链接 https://www.patest.cn/contests/gplt/L2-024 题意 给出 几个不同的圈子,然后 判断 有哪些人 是属于同一个部落的,或者理解为 ,有哪些人 是有关系的 ...

  7. loadrunder之脚本篇——加密解密

    密码加密 可以给密码加密,意在把结果字符串作为脚本的参数或者参数值.例如,完整可能有一个用户密码填写的表单,你想测试网站针对不同密码的反应,但是你又想保护密码的安全.Password Encoder允 ...

  8. css小知识---input输入块

    对于如下的界面,介绍一种实现方式. 可以将整个界面分为三块,左中右.通过display: inline-block;和float: right;左右浮动效果实现. 代码如下: <!DOCTYPE ...

  9. $2015 武汉森果公司web后端开发实习日记----书写是为了更好的思考

    找暑期实习,3月份分别投了百度和腾讯的实习简历,都止步于笔试,总结的主要原因有两点:基础知识不扎实,缺乏项目经验.后来到拉勾网等网站上寻找实习,看了很多家,都还是处于观望状态.后来参加了武汉实习吧在大 ...

  10. PHP 数字转大写

    <?php header("content-type:text/html;charset=utf-8"); function numToRmb($num){ $rmbNum ...