精华内容
下载资源
问答
  • (一)PYTHON的安装(已安装,可跳过此不步骤) 1、PYTHON下载 PYTHON官网:https://www.python.org/ 按照对应的系统下载,我这里是window系统,点击windows,根据自己系统操作位数下载 ...

    (一)PYTHON的安装(已安装,可跳过此步骤)

            1、PYTHON下载

                    PYTHON官网:https://www.python.org/

                    

                  按照对应的系统下载,我这里是window系统,点击windows,根据自己系统操作位数下载

                    

                                添加环境变量:

                                    

                                如果没有添加,可自行在计算机添加

                                        

    (二)第三方库的安装

              安装selenium和pyquery,在cmd命令下输入 pip install selenium(pyquery安装类似)

                    

              如果报错则进入python目录下scripts目录下,再输入命令

                  

            在python的IDLE下如果没有报错则安装成功

                  

    (三)浏览器及相应浏览器驱动的安装

          这里主要使用chrome浏览器,自行去谷歌官网下载安装,安装后查看谷歌版本,单击关于google chrome

        (一般在这里都可以找到)

                    

             我的版本:67.0

                                        

            下载对应的webdriver  (这里没有可以自己推测每3个版本,对应一个v65-67---v2.38,即v68-70--v2.39)

            下载地址:http://chromedriver.storage.googleapis.com/index.html

          

          

         把下载好的chromedriver.exe,解压后放到python36目录下(或者python36目录下的scripts) 

                

             在IDLE下执行如下代码,会自动打开你谷歌浏览器(环境搭建完成)

                         

    (四)实例代码详解

              要求:爬取https://www.xuangubao.cn/股票网站的信息((“利好”或“利空”)和“相关股票”),实现点击加载更多

             

          (1)打开浏览器,获取相关讯息:

                    

         (2)网页分析(selenium有很多定位方法,这里用到比较少)

                在上面的代码中,data已经拥有了网页当前页的所有内容(可输出观察);我们现在只要从中拿到我们想要的数据

                在网页中,右键,审查元素,(或者检查)分析网页:(由于得到的data可能与网页的分析有所出入,建议最好输出data,从data中分析得到正则表达式

               

               我们用正则表达式找到所有以1开头,以2为结尾内容用findall函数

                    

       实现点击:(点击之后的”利好”和“相关股票”的正则会与首页的不同(后面点击的与第一次点击后的一样))

          定位方法有:(这里用的比较少不做详细介绍,大家自行了解):  

                     find_element_by_id 当你知道一个元素的id属性时使用它。使用此策略,将返回具有与该位置匹配的id属性值的第一个元素。
                     find_element_by_name 当你知道一个元素的name属性时使用它。使用此策略,将返回具有与该位置匹配的id属性值的第一个元素。
                     find_element_by_xpath
                     find_element_by_link_text
                    find_element_by_partial_link_text
                    find_element_by_tag_name
                    find_element_by_class_name
                   find_element_by_css_selector



        源码附上:

    #coding=utf-8
    from selenium import webdriver
    import time
    import re
    from pyquery import PyQuery as pq




    def openurl(url,num):
            browser  = webdriver.Chrome()  #打开浏览器
            browser.get(url)               #进入相关网站
            html=browser.page_source       #获取网站源码
            data=str(pq(html))             #str() 函数将对象转化为适于人阅读的形式。
                                                                                                                  
            dic={}                         
            re_rule=r'<div class="news-item-container">(.*?)<div data-v-00b2e9bc=""/>'       
            datalist=re.findall(re_rule,data,re.S)
            for i in range(0,len(datalist)):
                    rule1=r'<img src="/img/icon-lihao.png" data-v-6c26747a=""/>(.*?)<!----></span>'
                    bullish = re.findall(rule1,datalist[i],re.S)
                    if len(bullish)==0:
                            rule1=r'<img src="/img/icon-likong.png" data-v-6c26747a=""/>(.*?)</span>'
                            bullish = re.findall(rule1,datalist[i],re.S)
                            
                    rule2=r'<span class="stock-group-item-name" data-v-f97d9694="">(.*?)</span>'
                    stock_name=re.findall(rule2,datalist[i], re.S)
                    
                    if len(stock_name) > 0 and len( bullish) > 0:
                            for c in range(0,len(stock_name)):
                                    dic[stock_name[c]]= bullish[0]
                                    print("正在爬取第",len(dic)+1,"个请稍等.....") 
                  
            c=len(datalist)
            if len(dic) < num:
                    while(1):
                            browser.find_element_by_class_name("home-news-footer").click()
                            time.sleep(1)
                            html=browser.page_source
                            data=str(pq(html))
                            datalist=re.findall(re_rule,data,re.S)
                            for i in range(c,len(datalist)):
                                    rule3=r'<img data-v-6c26747a="" src="/img/icon-lihao.png"/>(.*?)<!----></span>'
                                    bullish = re.findall(rule3,datalist[i],re.S)
                                    if len(bullish)==0:
                                            rule5=r'<img data-v-6c26747a="" src="/img/icon-likong.png"/>(.*?)</span>'
                                            bullish = re.findall(rule5,datalist[i],re.S)
                                    rule4=r'<span data-v-f97d9694="" class="stock-group-item-name">(.*?)</span>'
                                    stock_name=re.findall(rule4,datalist[i], re.S)
                                                    
                                    if len(stock_name) > 0 and len( bullish) > 0:
                                            for c in range(0,len(stock_name)):
                                                    dic[stock_name[c]]= bullish[0]
                                                    
                                
                            c=len(datalist)
                            if len(dic) > num :
                                    browser.quit()
                                    print("爬取完毕!!")
                                    break


                            print("正在爬取第",len(dic)+1,"个请稍等.....")   
            else:
                    browser.quit()
                    print("爬取完毕!!")
                    
            return dic
                                                                             
    url='https://www.xuangubao.cn/'
    dict=openurl(url,3)
    print(dict)
    #f=open("F:\\text.txt","a")
    #for key,values in  dict.items():
            #f.write((key+"\t"))
            #print(key,values)
    #f.close()     

    展开全文
  • python3.6 + selenium 3.11 + chromedriver.exe 错误简述: Element * is not clickable at point,Other element would receive the click 功能需求: 点击查看更多,获取页面数据 源代码如下 show_more = driver....

    环境:
    python3.6 + selenium 3.11 + chromedriver.exe

    错误简述:
    Element * is not clickable at point,Other element would receive the click

    功能需求:
    点击查看更多,获取页面数据
    功能需求截图延时
    源代码如下

    show_more = driver.find_element_by_xpath('//tbody[@class="ant-table-tbody"]/tr/td/a')
    show_more.click()
    

    报错信息:

    selenium.common.exceptions.WebDriverException: Message: unknown error:
    Element * is not clickable at point (817, 751).
    Other element would receive the click: *

    错误解释:
    a标签被点击时,被上一层td标签接收了点击,说明a标签被覆盖了!

    解决办法:

    show_more = driver.find_element_by_xpath('//tbody[@class="ant-table-tbody"]/tr/td/a')
    
    ##方法1
    show_more.send_keys('\n')
    show_more.click()
    
    ##方法2
    show_more.send_keys(Keys.SPACE)
    show_more.click()
    
    # 方法3
    driver.execute_script("arguments[0].click();", show_more)
    

    python交流群:1135250278
    公众号:柚米汇
    欢迎大家来支持我下,谢谢!
    柚米汇

    展开全文
  • 点击鼠标右键 click_and_hold(on_element=None) 点击鼠标左键,不松开 release(on_element=None) 在某个元素位置松开鼠标左键 context_click(on_element=None) 点击鼠标右键 double_click(on_element=None) ...
  • 在我们浏览网页的时候经常会... click():鼠标点击事件(其他鼠标事件请参考Python爬虫 – Selenium(5)鼠标事件) move_to_element():鼠标悬停(详情请参考Python爬虫 – Selenium(5)鼠标事件) from selenium im
  • Python爬虫 - Selenium(5)鼠标事件

    千次阅读 2019-12-29 21:08:50
    前言:前边几篇文章也介绍过鼠标点击方法`click()`,但是这远远无法满足我们多样的需求,在 WebDriver 中, 关于鼠标操作的方法封装在 ActionChains 类中,其中包含右击、双击、拖动、鼠标悬停等等。

    前言:前边几篇文章也介绍过鼠标点击方法click(),但是这远远无法满足我们多样的需求,在 WebDriver 中, 关于鼠标操作的方法封装在 ActionChains 类中,其中包含右击、双击、拖动、鼠标悬停等等。

    一、常用方法

    函数名 说明
    click(on_element=None) 点击鼠标右键
    click_and_hold(on_element=None) 点击鼠标左键,不松开
    release(on_element=None) 在某个元素位置松开鼠标左键
    context_click(on_element=None) 点击鼠标右键
    double_click(on_element=None) 双击鼠标左键
    drag_and_drop(source, target) 拖拽到某个元素然后松开
    drag_and_drop_by_offset(source, xoffset, yoffset) 拽到某个坐标然后松开
    move_by_offset(xoffset, yoffset) 鼠标从当前位置移动到某个坐标
    move_to_element(to_element) 鼠标移动到某个元素
    move_to_element_with_offset(to_element, xoffset, yoffset) 移动到距某个元素(左上角坐标)多少距离的位置
    perform() 执行所有 ActionChains 中存储的行为,相当于提交

    二、代码示例

    选几个经常使用的测试一下,其他事件语法相同

    from selenium import webdriver
    import time
    from selenium.webdriver import ActionChains
    
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.cn")
    
    #定位到需要右击的元素,然后执行鼠标右击操作(例:对新闻标签进行右击)
    context_click_location = driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[3]/a[1]')
    ActionChains(driver).context_click(context_click_location).perform()
    
    time.sleep(2) #睡两秒,看一下效果
    
    # 定位到需要悬停的元素,然后执行鼠标悬停操作(例:对设置标签进行悬停)
    move_to_element_location = driver.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[3]/a[8]")
    ActionChains(driver).move_to_element(move_to_element_location).perform()
    
    time.sleep(2) #睡两秒,看一下效果
    
    # 鼠标悬浮后点击高级搜索
    driver.find_element_by_xpath("/html/body/div[1]/div[6]/a[2]").click()
    
    time.sleep(2) #睡两秒,看一下效果
    
    driver.quit() #关闭所有标签页
    

    由于百度没有可拖动的元素,所以在菜鸟上找了一个网址进行测试,由于菜鸟上的网页是使用frame内嵌的,所以添加了个处理frame的过程,关于frame的处理请参考我的另一篇文章:Python爬虫 - Selenium(8)frame/iframe表单嵌套页面

    from selenium import webdriver
    from selenium.webdriver import ActionChains
    import time
    
    driver = webdriver.Chrome()
    driver.get("https://www.runoob.com/try/try.php?filename=jqueryui-example-draggable-scroll")
    # 切换到目标元素所在的frame
    driver.switch_to.frame("iframeResult")
    
    # 确定拖拽目标的起点和终点,完成拖拽
    start_location = driver.find_element_by_id("draggable")
    end_location = driver.find_element_by_id("draggable3")
    ActionChains(driver).drag_and_drop(start_location,end_location).perform()
    
    time.sleep(2) #睡两秒,看一下效果
    
    driver.quit() #关闭所有标签页
    

    Selenium文集传送门:

    标题 简介
    Python爬虫 - Selenium(1)安装和简单使用 详细介绍Selenium的依赖环境在Windows和Centos7上的安装及简单使用
    Python爬虫 - Selenium(2)元素定位和WebDriver常用方法 详细介绍定位元素的8种方式并配合点击和输入、提交、获取断言信息等方法的使用
    Python爬虫 - Selenium(3)控制浏览器的常用方法 详细介绍自定义浏览器窗口大小或全屏、控制浏览器后退、前进、刷新浏览器等方法的使用
    Python爬虫 - Selenium(4)配置启动项参数 详细介绍Selenium启动项参数的配置,其中包括无界面模式、浏览器窗口大小设置、浏览器User-Agent (请求头)等等
    Python爬虫 - Selenium(5)鼠标事件 详细介绍鼠标右击、双击、拖动、鼠标悬停等方法的使用
    Python爬虫 - Selenium(6)键盘事件 详细介绍键盘的操作,几乎包含所有常用按键以及组合键
    Python爬虫 - Selenium(7)多窗口切换 详细介绍Selenium是如何实现在不同的窗口之间自由切换
    Python爬虫 - Selenium(8)frame/iframe表单嵌套页面 详细介绍如何从当前定位的主体切换为frame/iframe表单的内嵌页面中
    Python爬虫 - Selenium(9)警告框(弹窗)处理 详细介绍如何定位并处理多类警告弹窗
    Python爬虫 - Selenium(10)下拉框处理 详细介绍如何灵活的定位并处理下拉框
    Python爬虫 - Selenium(11)文件上传 详细介绍如何优雅的通过send_keys()指定文件进行上传
    Python爬虫 - Selenium(12)获取登录Cookies,并添加Cookies自动登录 详细介绍如何获取Cookies和使用Cookies进行自动登录
    Python爬虫 - Selenium(13)设置元素等待 详细介绍如何优雅的设置元素等待时间,防止程序运行过快而导致元素定位失败
    Python爬虫 - Selenium(14)窗口截图 详细介绍如何使用窗口截图
    Python爬虫 - Selenium(15)关闭浏览器 详细介绍两种关闭窗口的区别

    欢迎留言吐槽

    展开全文
  • Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码。对于会阻塞线程的操作包含访问文件、数据库或者Web、产生新的...快速上手Python爬虫Scrapy框架的操作使用:点击sc...

    Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码。对于会阻塞线程的操作包含访问文件、数据库或者Web、产生新的进程并需要处理新进程的输出(如运行shell命令)、执行系统层次操作的代码(如等待系统队列),Twisted提供了允许执行上面的操作但不会阻塞代码执行的方法。

     

    快速上手Python爬虫Scrapy框架的操作使用:点击scrapy框架

    展开全文
  • scrapy是基于事件驱动的Twisted框架下用纯python写的爬虫框架。很早之前就开始用scrapy来爬取网络上的图片和文本信息,一直没有把细节记录下来。这段时间,因为工作需要又重拾scrapy爬虫,本文和大家分享下,包你一...
  • Python爬虫入门学习03

    2020-08-21 21:32:43
    F12开发者工具的使用 1.ELements:元素面板。 2.Console:控制台面板 3.Sources:源代码面板 4.Network:网络面板 5.Performance:性能面板 6.Memory:内存面板 7.Application:应用面板 ...点击左上角小箭头,选
  • Python爬虫之JS的解析

    2020-09-13 07:47:36
    JS的解析 学习目标: 了解 定位js的方法 了解 添加断点观察js的执行过程的...通过点击按钮,然后点击Event Listener,部分网站可以找到绑定的事件,对应的,只需要点击即可跳转到js的位置 1.2 通过search all file 来
  • Python爬虫-- Scrapy框架

    2017-07-26 08:13:00
    Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码。对于会阻塞线程的操作包含访问文件、数据库或者Web、产生新的进程并需要处理新进程的输出(如运行shell命令)、执行...
  • JS的解析 学习目标: 了解 定位js的方法 了解 添加断点观察js的执行过程的...通过点击按钮,然后点击Event Listener,部分网站可以找到绑定的事件,对应的,只需要点击即可跳转到js的位置 1.2 通过search all file 来
  • PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取t.cn/A6Zvjdun 前一阵子,由于肖战的“227事件”微博和朋友圈都被刷屏,起因在与肖战的粉丝发现在AO3作品库平台收录关于肖战的同人作品,认为该部...
  • 点击和输入 提交 其他方法 鼠标事件 键盘事件 获取断言信息 设置元素等待 显式等待 隐式等待 定位一组元素 多表单切换 多窗口切换 警告框 下拉列表框选择 文件上传 操作cookie 调用JavaS...
  • 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 ...调用点击事件,并循环上述过程: 最终效果图: 代码: from selenium import webdriver
  • 做网络爬虫的同学肯定见过各种各样的验证码,比较高级的有滑动、点选等样式,...一般来说,登录注册页面在点击提交的时候都会伴随着一个表单提交,在表单提交的时候会有 JavaScript 事件的触发。如果加入了验证码,...
  • 4.一旦检测到有票,执行预定的按钮点击,来到预定界面后,找到对应乘客,执行点击事件,再提交订单,点击。 5.点击完提交后,弹出“确认按钮”,然后执行点击事件,完成抢票。 # 1.12306抢票 # 1.进入页面,手动登录...
  • Python定义点击右上角关闭按钮事件

    千次阅读 2019-09-20 18:11:51
    Python定义点击右上角关闭按钮事件(Python defines the event of clicking the close button in the upper right corner) 文章来自:https://www.cnblogs.com/iAmSoScArEd/p/11200029.html 爬虫、转载请注明出处。 ...
  • 以下内容是根据《Python爬虫开发与项目实战》一书学习整理的,如果内容涉及到侵权等问题,请联系本人删稿。 如果内容知识点有问题,也请联系本人,及时改正。   2、多线程 优点:a、可以把运行时间长的任务放到...
  • Python网络爬虫5 - 爬取QQ空间相册

    千次阅读 多人点赞 2019-03-05 15:09:06
    自毕业后,就再也没有用过QQ,QQ空间里记录的是些并不精彩的青葱岁月,但好歹也是份回忆,近日想着学以致用,用Python把QQ空间相册的所有照片爬取...根据登录按钮绑定的监听事件可以追踪到该按钮的点击事件如下: ...
  • 建立点击事件4.切换窗口5.iframe问题 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题,selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转...
  • 适用人群1、想学习爬虫的。2、想学习如何破解反爬虫机制的。课程概述1、介绍了普通的爬虫方式。2、介绍了如何攻破有道翻译的反爬虫机制。3、制作属于自己的GUI有道词典。 ...
  • JS的解析 学习目标: 了解 定位js的方法 了解 添加断点观察js的执行过程的...通过点击按钮,然后点击Event Listener,部分网站可以找到绑定的事件,对应的,只需要点击即可跳转到js的位置 1.2 通过search all file 来
  • 我在做一个python爬虫,使用了selenium库。我在一个网页中触发了一个click事件打开了一个新的网页,并没有新开窗口,然后我用driver.page_source得到的却是原来那个网页非新打开网页的源码 解决方法其实很简单,...
  • 更多Pythton学习系列内容请点击我 本文基于Python3.7 1. 相关 什么是异常?异常就是“不正常”。我们的程序的执行过程中发生了一个不正常的事件,这个事件影响了程序的正常运行,此时就是发生了程序异常。与在Java中...
  • GUI界面+python爬虫+数据清洗与处理+pyecharts可视化展示 软件架构 (1)通过tkinter制作GUI界面,通过按钮触发爬虫事件,数据分析事件。 (2)爬虫提取数据,并通过机器学习算法进行相关的计算求和,以及数据清洗...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

python爬虫点击事件

python 订阅
爬虫 订阅