8-1 selenium动态网页请求与模拟登录知乎

Ⅰ、介绍selenium

1.什么是selenium:selenium百度百科

2.selenium的构架图:

如果要操作浏览器,还需要一个drive。

Ⅱ、安装selenium

1.可以 pip install selenium。

2.找selenium的文档(比较难找)。

如图:

找到Drive,下载对应浏览器的drive,推荐用chrome(如果打不开就要VPN下载)

Ⅲ、使用selenium

 # -*- coding: utf-8 -*-

 from selenium import webdriver
from scrapy.selector import Selector #知乎的模拟登录
browser = webdriver.Chrome(executable_path="E:/chromedriver.exe") #路径是chromedriver.exe的存放的位置
browser.get("https://www.zhihu.com/#signin")
browser.find_element_by_css_selector(".view-signin input[name='account']").send_keys("********") #帐号
browser.find_element_by_css_selector(".view-signin input[name='password']").send_keys("********") #密码
browser.find_element_by_id("captcha").send_keys(input('请输入验证码:'))
browser.find_element_by_css_selector(".view-signin button.sign-button").click() #登录
browser.quit() #可以用selenium得到js加载后的html,比如这样的话可以抓取到本来抓取的不到的一些字段(淘宝的交易量等等)
browser = webdriver.Chrome(executable_path="E:/chromedriver.exe")
browser.get("https://detail.tmall.com/item.htm?spm=a230r.1.14.3.yYBVG6&id=538286972599&cm_id=140105335569ed55e27b&abbucket=15&sku_properties=10004:709990523;5919063:6536025")
print(browser.page_source) #page_source就是js加载完的源代码
#browser.quit()
'''
如果是用selenium本身的选择器(python写的,比较慢),会很慢
所以现在转换成scrapy中的selector(他是用c语言写的,很快)
模版,也可以嵌入scrapy中
'''
t_selector=Selector(text=browser.page_source)
print(t_selector.xpath('//*[@id="J_StrPriceModBox"]/dd/span/text()').extract())

有时候取不到内容,看看是不是还没有加载完,在中间sleeep几秒就好了。

8-2 selenium模拟登录微博, 模拟鼠标下拉

微博也有开放的API:http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5

 #selenium 完成微博模拟登录
browser = webdriver.Chrome(executable_path="E:/chromedriver.exe")
browser.get("http://weibo.com/")
import time
time.sleep(5)
browser.find_element_by_css_selector("#loginname").send_keys("******")
browser.find_element_by_css_selector(".info_list.password input[node-type='password']").send_keys("******")
browser.find_element_by_css_selector(".info_list.login_btn a[node-type='submitBtn']").click()
#下拉
for i in range(3):
'''三次下拉操作,这是javascript的知识'''
browser.execute_script("window.scrollTo(0, document.body.scrollHeight); var lenOfPage=document.body.scrollHeight; return lenOfPage;")
time.sleep(3)

8-3 chromedriver不加载图片、phantomjs获取动态网页

chromedriver不加载图片:

 #设置chromedriver不加载图片
#是固定的模版
chrome_opt = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images":2}
chrome_opt.add_experimental_option("prefs", prefs)
browser = webdriver.Chrome(executable_path="E:/chromedriver.exe",chrome_options=chrome_opt)
browser.get("http://weibo.com/")

phantomjs获取动态网页:

下载地址:http://phantomjs.org/download.html 如果不能下载,复制链接到迅雷下载

淘宝的详情页实例

 #phantomjs, 无界面的浏览器, 多进程情况下phantomjs性能会下降很严重
browser = webdriver.PhantomJS(executable_path="F:/迅雷下载/phantomjs-2.1.1-windows/bin/phantomjs.exe")
browser.get("https://detail.tmall.com/item.htm?spm=a230r.1.14.3.yYBVG6&id=538286972599&cm_id=140105335569ed55e27b&abbucket=15&sku_properties=10004:709990523;5919063:6536025")
print (browser.page_source)
browser.quit()

需要代码汇总请移步我的github:https://github.com/pujinxiao/project_pjx/blob/master/s0vkaq/ArticleSpider/tools/selenium_spider.py

关于selenium的我推荐虫师的教程,还是很不错的。「UI 测试自动化selenium」汇总

作者:今孝

出处:http://www.cnblogs.com/jinxiao-pu/p/6809583.html

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

第8章 scrapy进阶开发(1)的更多相关文章

  1. 第8章 scrapy进阶开发(2)

    8-4 selenium集成到scrapy中 其实也没什么好说的直接上代码 这是在middlewares.py中定义的一个class: from selenium.common.exceptions ...

  2. 【odoo14】第十三章、网站开发(对外服务)

    本章我们将介绍一些关于odoo web服务方面的基础知识.进阶的内容,将在第十四章介绍. odoo中的web请求是由python的werkzeug库驱动的.odoo为了操作方便,对werkzeug进行 ...

  3. 【SharePoint学习笔记】第1章 SharePoint Foundation开发基础

    SharePoint Foundation开发基础 第1章 SharePoint Foundation开发基础 SharePoint能做什么 企业信息门户 应用程序工具集(文档库.工作空间.工作流.维 ...

  4. SharePoint 2010 最佳实践学习总结------第1章 SharePoint Foundation开发基础

    ----前言 这段时间项目出在验收阶段,不是很忙,就潜心把SharePoint学一下,不求有多深刻,初衷只是先入门再说.后续会发布一系列的学习总结.主要学习的书籍为<SharePoint2010 ...

  5. 第一章 搭建Qt开发环境

    第一章 搭建Qt开发环境 1.到http://download.qt-project.org/archive/上下载Qt的源码包.我下载的是qt-everywhere-opensource-src-4 ...

  6. 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)

    编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...

  7. Android群英传笔记——第二章:Android开发工具新接触

    Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...

  8. 【STM32H7教程】第2章 STM32H7的开发环境搭建

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第2章    STM32H7的开发环境搭建 本章主要为大 ...

  9. 第三百九十四节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置2,以及目录结构说明

    第三百九十四节,Django+Xadmin打造上线标准的在线教育平台—Xadmin后台进阶开发配置2,以及目录结构说明 设置后台列表页面可以直接修改字段内容 在当前APP里的adminx.py文件里的 ...

随机推荐

  1. C#基础知识入门概要(自我回顾用)

    一,C#是什么? 人与人之间可以用语言进行交流,我们和计算机交流也是通过语言.我们可以通过语言让一个人做一件我们想让他做事情(他愿意的话~),我们能不能让计算机按照我们的意愿来做事情呢?比如我们让计算 ...

  2. .NET中异常与错误码优劣势对比

    .NET之所以选择异常,而不是返回错误码来报告异常,是由于前者有以下几个优势: 1.异常与oop语言的结合性更好.oop语言经常需要对成员签名强加限制,比如c#中的构造函数.操作符重载和属性,开发者对 ...

  3. [uwp]自定义Behavior之随意拖动

    由于最近有需求,所以自定义了一个随意拖动元素的Behavior. 当然在使用这个自定义的Behavior时,有个小假设:拖动元素必须是Canvas容器的子元素. 实现原理比较简单低效: 监听被拖动元素 ...

  4. [uwp]MVVM模式实战之必应壁纸查看器

    最近学习MVVM,至于什么是MVVM我也在这儿不多说了,一是关于它的解释解释网上非常多,二是我怕自己讲不清,误导自己没关系,误导别人就不好了.. 好了,废话结束,看是实战...... 这个必应壁纸的d ...

  5. 配置DNS服务器转发器

    1.(windows server 2008 r2)控制面板->管理工具->服务器管理器->DNS->服务器图标->属性 2.转发器->编辑 3.填写DNS并点击确 ...

  6. jdk命令行工具(一)

    1.概述 熟悉java开发的人应该都知道在jdk的bin目录下有许多的工具,这些工具主要用于监视虚拟机和故障处理.这些故障处理工具被Sun公司称作为“礼物”附赠给JDK的使用者,并在软件的使用说明中把 ...

  7. Tsung安装指南

    1. 所需要软件包unixODBC-2.2.14.tar.gzotp_src_R13B02-1.tar.gztsung-1.3.1.tar.gzTemplate-Toolkit-2.22.tar.gz ...

  8. 高斯分布(Gaussian Distribution)的概率密度函数(probability density function)

    高斯分布(Gaussian Distribution)的概率密度函数(probability density function) 对应于numpy中: numpy.random.normal(loc= ...

  9. node.js常用命令

    安装node 验证是否安装node $node -v $npm -v npm node package manager , Node 的包管理器 安装 包 # 安装到当前目录 $ npm instal ...

  10. jQuery EasyUI Datagrid组件的完整的基础DOM结构

    标题可能有点长,什么叫“完整的基础DOM结构”,这里“基础”的意思是指这个结构不依赖具体数据,不依赖Datagrid的view属性,只要存在Datagrid实例就会存在这样的基础DOM结构:而“完整” ...