2021-4-6 python爬虫自学-——selenium动态/iframe_猫鼠兽的博客-程序员宅基地

技术标签: python  笔记  

selenium模块的基本使用:

问题:selenium模块与爬虫之间具有怎样的关联?
    - 便捷的获取网站中动态加载的数据
    - 便捷的实现模拟登陆
什么是selenium模块
    - 基于浏览器自动化的一个模块。
selenium使用流程:
    - pip install selenium
    - 下载一个浏览器的驱动程序 
    -实例化一个浏览器对象
    -编写基于浏览器自动化的操作代码
        -发起请求:get(url)
        -标签定位:find系列的方法
        -标签交互:send_keys('xxx')
        -执行js程序:excute_script('jsCode')
        -前进,后退:forword(),back()
        -关闭:quit()
    -selenium处理iframe
        -如果定位的标签存在于iframe标签之中,则必须使用switch_to.frame(id)
        -动作链(拖动):from selecnium.webdriver import ActionChains
            -实例化一个动作链对象:action=ActionChains(bro)
            - click_and-hold(div):长按且点击操作
            - move_by_offset(x,y)
            - perform()让动作链立刻执行
            - action.release()释放动作链对象

from selenium import webdriver
from lxml import etree
from time import sleep
#实例化一个浏览器对象,传入驱动
bro=webdriver.Chrome(executable_path='./chromedriver.exe')
#让浏览器发起一个直到url对应请求
bro.get('http://scxk.nmpa.gov.cn:81/xk/')
#page_source获取浏览器当前页面的页面源码数据
page_text=bro.page_source
#解析企业实际class[dzpzmain]/div/ul[2]/li/dl
tree=etree.HTML(page_text)
li_list=tree.xpath('//ul[@id="gzlist"]/li')
for li in li_list:
    name=li.xpath('./dl/@title')[0]
    print(name)
sleep(5)
bro.quit()
from selenium import webdriver
from lxml import etree
from time import sleep
bro=webdriver.Chrome(executable_path='./chromedriver.exe')
bro.get('https://www.taobao.com/')
#标签定位:
search_input=bro.find_element_by_id('q')
#标签交互:
search_input.send_keys('许佳琪同款')
#执行一组js程序
#bro.execute('window.scrollTo(0,document.body.scrollHeight)')
#sleep(2)
#点击搜索按钮
btn=bro.find_element_by_css_selector('.btn-search')
btn.click()
bro.get('https://baidu.com')
sleep(2)
#回退
bro.back()
#前进
bro.forward()
sleep(5)

控制css的加载:for.set_preference(“premissions.default.stylesheet”,2)
控制图片文件的显示:for.set_preference(“premissions.default.image”,2)
控制Javascript的运行:for.set_preference(“Javascript.enabled”,False)

from selenium import  webdriver
from time import  sleep
#导入动作链
from selenium.webdriver import  ActionChains
bro=webdriver.Chrome(executable_path='./chromedriver.exe')
bro.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
#如果定位的标签是存在于iframe标签之中的则必须通过如下操作在标签进行标签定位
bro.switch_to_frame('iframeResult')#切换浏览器标签定位的作用域
div=bro.find_element_by_id('draggable')
#动作链
action=ActionChains(bro)
#点击长按指定的标签
action.click_and_hold(div)
for i in range(5):
    #perform()立即执行动作链操作
    #x表示水平方向,y表示垂直方向
    action.move_by_offset(17,0).perform()
    sleep(0.3)
#释放动作链
action.release()
print(div)
bro.quit()
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45921943/article/details/115467542

智能推荐

写了8年的代码,做过的项目都下线了,程序员的意义在哪里!_weixin_34081595的博客-程序员宅基地

01起因前几天项目交付上线,所以闲下来了。忽然想起来,自己业余接的活,有些项目已经不再运营了,所以想清理下域名解析。上去阿里云一看,总的大概有 15 个解析。这 15 个解析就意味着 15 个项目。这些项目都是我去谈的需求、写的文档、前后端开发、部署上线维护,整个项目几乎都是我一人完成的。想当初,很用心的去开发每一个项目;如今,...

VBA语句集100句(第2辑)_iteye_15675的博客-程序员宅基地

VBA语句集(第2辑)*******************************************************定制模块行为(101) Err.Clear ‘清除程序运行过程中所有的错误*******************************************************工作簿(102) ThisWorkbook.Builti...

LiDAR相关名词中英文对照(非公开)_大作家佚名的博客-程序员宅基地

车载LiDAR相关术语或名词road poles 道路杆 road corridor road network road furniture road boundary roadside poles sign poles flagpoles unorganized 3D point clouds 无组织三维点云 two/three/four data sets 2/3/4个数据集

阿帕奇和mysql关系,Wndows下Apache php Mysql环境的搭建和关系_狐狸晨曦的博客-程序员宅基地

Wndows下Apache PHP MySQL环境的关系Apache它是web 服务器软件。同类产品有微软的IIS等。功能是让某台电脑可以提供 www服务,本地环境下可以通过127.0.0.1这个IP来访问本地网站。PHP它是服务端语言解释软件。由apache软件加载以后,使apache增加解释php文件的功能,以便这台服务器可以运行php程序。访问方法如下:地址/文件名.php。MYSQL它是小...

Java学习笔记(常用类)_鬼厉哥哥的博客-程序员宅基地

JAVA笔记/ 可视化日历“` import java.text.DateFormat;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCal...

回溯法_01背包_中小庸的博客-程序员宅基地_01背包回溯法

问题描述:给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为W。一个物品要么全部装入背包,要么全部不装入背包,不允许部分装入。装入背包的物品的总重量不超过背包的容量。问应如何选择装入背包的物品,使得装入背包中的物品总价值最大?定义问题的解空间解的形式(x1,x2,…,xn)(x1,x2,…,xn)(x1,x2,…,xn),其中xi=0xi=0xi=0或111xi=0x_i=0xi​=0:第iii个物品不装入背包xi=1x_i=1xi​=1:第iii个物品装入背包约束条

随便推点

JVM中的双亲委派,新生代老年代。_big12138的博客-程序员宅基地_双亲委派机制

一、一个类被初始化加载的过程二、继承中的类初始化过程(静态成员变量初始化时基于在代码中的排序。)父类-- 静态变量父类--静态初始化块子类--静态变量子类--静态初始化块、父类--变量父类--初始化块父类--构造器子类--变量子类--初始化块子类--构造器在类加载阶段通过一个类的全限定明来获取描述该类的二进制字节流这个动画,代码被称为类加载器,这个动作是可以自定义来实现的2.1JVM中的类加载器类在加载的过程中是通过...

maven多模块依赖_老谭TYH的博客-程序员宅基地_maven模块依赖

maven多模块之间的调用也是通过dependency的,和调用其他外部的依赖没区别。1、如果没有父模块,是完全分离的多个模块,那么你只能先编译好底层的模块(比如你说的service模块为一个jar),然后再引入到controller模块中去(就和引用一个第三方的jar一样)。 通常的做法是建立一个本地仓库,编写service的团队写好后mvn install到本地仓库去 编写controller的团队在pom里正常引用这个service模块 。2、如果是有一个父模块的,比如同时包括control.

[BZOJ4127]Abs_weixin_34260991的博客-程序员宅基地

[BZOJ4127]Abs题目大意:给你一棵\(n(n\le10^5)\)个结点的树,\(m(m\le10^5)\)个操作,操作共\(2\)种:将\(u,v\)路径上的所有结点权值\(+d(d\le0)\);询问\(u,v\)路径上所有结点权值的绝对值的和。思路:开两棵线段树,分别维护正数和负数。要维护区间和,如果是负数的话还要维护最大值。询问的时候如果负数的最大值\(>0...

Kubernetes的Local Persistent Volumes使用小记_普通网友的博客-程序员宅基地

操作系统:CentOS Linux release 7.8.2003 (Core)kubernetes:1.15.3helm:2.16.1体验Local PV的步骤简述本次实战的目标是快速创建Local PV,并验证该Local PV正常可用,全文由以下部分组成:创建Local PV;通过helm下载tomcat的chart;修改chart,让tomcat使用刚才创建的Local PV;部署tomcat;在服务器上检查文件夹已正常写入;参考文章如..

faiss 安装_coffee_o的博客-程序员宅基地

pip --default-time=1000 install -i https://pypi.tuna.tsinghua.edu.cn/simple faiss-gpupip --default-time=1000 install -i https://pypi.tuna.tsinghua.edu.cn/simple faiss-cpu

推荐文章

热门文章

相关标签