利用selenium爬取豆瓣电影Top250
这几天在学习selenium,顺便用selenium + python写了一个比较简陋的爬虫,现附上源码,有时间再补充补充:
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By import os class DouBan_Movies: def __init__(self): #初始化chromedriver self.driver = webdriver.Chrome() #调用函数进入豆瓣电影top250官网 self.__enter_douban() #在当前目录下建一个文本文件用来写入电影信息 self.fs = open(os.getcwd() + r"\douban_top250.txt", "w+", encoding="utf-8") def __enter_douban(self): #打开百度首页 self.driver.get("http://www.baidu.com") #窗口最大化 self.driver.maximize_window() #百度首页输入框的元素表达式 input_id = "kw" #设置显性等待,等待百度首页输出框的出现 WebDriverWait(self.driver, 3, 0.3).until(EC.visibility_of_element_located((By.ID, input_id))) #定位百度输入框并输入豆瓣电影Top250 self.driver.find_element_by_id(input_id).send_keys("豆瓣电影Top250") #定位百度一下按钮并点击 self.driver.find_element_by_id("su").click() #第一条搜索结果的元素表达式 top250_css = "div[id='1'] h3 a" #设置显性等待,等待第一条搜索结果的出现 WebDriverWait(self.driver, 5, 0.3).until(EC.visibility_of_element_located((By.CSS_SELECTOR, top250_css))) #获得当前浏览器的所有窗口句柄 windows = self.driver.window_handles #定位到第一条搜索结果并点击 self.driver.find_element_by_css_selector(top250_css).click() #设置显性等待,等待新窗口的出现 WebDriverWait(self.driver, 10, 0.3).until(EC.new_window_is_opened(windows)) #获得当前浏览器的所有窗口句柄 windows = self.driver.window_handles #切换到新的窗口 self.driver.switch_to.window(windows[-1]) def __get_datas(self): if self.page_num == 1: #得到标题 title = self.driver.find_element_by_xpath("//div[@id='content']//h1").text #打印标题 print(title) self.fs.write(title + "\r\n") #获得当前页面电影信息的元素对象的列表,总共有25条 movies_list = self.driver.find_elements_by_xpath("//ol//li") for element in movies_list: print(element.text + "\n") self.fs.write(element.text + "\r\n") def get_all_pages(self): self.page_num = 1 while self.page_num < 26: self.__get_datas() print("-------------第{0}页-----------\n".format(self.page_num)) self.fs.write("-------------第{0}页-----------\n".format(self.page_num)) self.page_num += 1 #关闭文件 self.fs.close() douban_movies = DouBan_Movies() douban_movies.get_all_pages()
控制台输出
保存到文件
利用selenium爬取豆瓣电影Top250的更多相关文章
- scrapy框架 + selenium 爬取豆瓣电影top250......
废话不说,直接上代码..... 目录结构 items.py import scrapy class DoubanCrawlerItem(scrapy.Item): # 电影名称 movieName = ...
- urllib+BeautifulSoup无登录模式爬取豆瓣电影Top250
对于简单的爬虫任务,尤其对于初学者,urllib+BeautifulSoup足以满足大部分的任务. 1.urllib是Python3自带的库,不需要安装,但是BeautifulSoup却是需要安装的. ...
- python2.7爬取豆瓣电影top250并写入到TXT,Excel,MySQL数据库
python2.7爬取豆瓣电影top250并分别写入到TXT,Excel,MySQL数据库 1.任务 爬取豆瓣电影top250 以txt文件保存 以Excel文档保存 将数据录入数据库 2.分析 电影 ...
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250
scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...
- scrapy爬取豆瓣电影top250
# -*- coding: utf-8 -*- # scrapy爬取豆瓣电影top250 import scrapy from douban.items import DoubanItem class ...
- 一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用
学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺. 本文通过爬取豆瓣top250电影学习python requests的使用. 1.准备工作 在pycharm中安装request库 ...
- python 爬虫&爬取豆瓣电影top250
爬取豆瓣电影top250from urllib.request import * #导入所有的request,urllib相当于一个文件夹,用到它里面的方法requestfrom lxml impor ...
- 【转】爬取豆瓣电影top250提取电影分类进行数据分析
一.爬取网页,获取需要内容 我们今天要爬取的是豆瓣电影top250页面如下所示: 我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西.直接进入主题吧! 知道我们需要的内容在哪里了, ...
- Scrapy中用xpath/css爬取豆瓣电影Top250:解决403HTTP status code is not handled or not allowed
好吧,我又开始折腾豆瓣电影top250了,只是想试试各种方法,看看哪一种的方法效率是最好的,一直进行到这一步才知道 scrapy的强大,尤其是和selector结合之后,速度飞起.... 下面我就采用 ...
随机推荐
- UML初览(转)
原文:UML初览 本章使用一个简单的例子对UML中所使用的概念和视图进行初览.本章的目的是要将高层UML概念组织成一系列较小的视图和图表来可视化说明这些概念,说明如何用各种不同的概念来描述一个系统以及 ...
- 017-Hadoop Hive sql语法详解7-去重排序、数据倾斜
一.数据去重排序 1.1.去重 distinct与group by 尽量避免使用distinct进行排重,特别是大表操作,用group by代替 -- 不建议 select DISTINCT key ...
- GCE 创建一个Linux VM
sudo yum install wget 安装Java sudo wget --no-check-certificate --no-cookies --header "Cookie: or ...
- SpringMVC:学习笔记(5)——数据绑定及表单标签
SpringMVC——数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...
- Yii2 使用 Beanstalk 队列系统
参考网址: Beanstalk:https://github.com/kr/beanstalkd Beanstalk console:https://github.com/ptrofimov/bean ...
- five application :Labeling features
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 查看linux系统版本信息(Oracle Linux、Centos Linux、Redhat Linux、Debian、Ubuntu)
一.查看Linux系统版本的命令(3种方法) 1.cat /etc/issue,此命令也适用于所有的Linux发行版. [root@S-CentOS home]# cat /etc/issue Cen ...
- HTTP学习笔记01-URL
URI URL语法 相对URL和绝对URL 相对URL URL的常用协议 http https mailto ftp rtsprtspu file news telnet 展望美好的未来 1.URI ...
- 阿拉伯数字转中文大写数字的JS
function intToChinese ( str ) { str = str+''; var len = str.length-1; var idxs = ['','十','百','千','万' ...
- 主攻ASP.NET.4.5.1 MVC5.0之重生:根据产品类别显示菜单分类和分页
路径访问的几种方式和分页效果 显示其它类别的效果和多数据分页效果 默认访问网站路径效果和多数据分页效果 URL路径访问可页面 http://localhost:5339/stationery http ...