精华内容
下载资源
问答
  • 现在目的就是爬取有关这个关键词的网页文章,如题目、媒体、日期、内容、url。如下图: 加载包 import requests from bs4 import BeautifulSoup #bs4 import re import pandas as pd import urllib....

    在搜狗新闻中,输入关键词后,出现6页有关于这个关键词的新闻。

    现在目的就是爬取有关这个关键词的网页文章,如题目、媒体、日期、内容、url。如下图:

     

     

    加载包
    
    import requests
    from bs4 import BeautifulSoup      #bs4
    import re
    import pandas as pd
    import urllib.request
    from selenium import webdriver    #模拟鼠标点击
    
    #打开Firefox浏览器,模拟器
    driver = webdriver.Chrome()
    driver = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver")
    
    
    #第一页的网址
    url = "https://news.sogou.com/news?oq=%C1%BD%B0%B6%B9%D8%CF%B5&mode=1&manual=&stj0=8&query=%C1%BD%B0%B6%B9%D8%CF%B5%B7%A2%D5%B9%C7%B0%BE%B0&stj=8%3B0%3B0%3B0&stj2=0&stj1=0&hp=0&time=0&hp1=&sut=18021&lkt=0%2C0%2C0&ri=8&sst0=1541664088389&sort=1&page=1&w=01025001&dr=1"
    
    
    driver.get(url)  # 模拟浏览器 解析网页
    
    r = requests.get(url)    #请求网页 
    soup =BeautifulSoup(r.text,"html.parser")     # bs4 解析网页

     获取关键词所得到有关文章的页数,这里是6页。 

     

    a=str(soup.find_all(name = "div",attrs = {"class":"p"}))   #获取div区域下的内容解析
    url= re.findall(r'<a href="(.*?)" ',a)   #用re正则来获取所有页数url
    page=len(url)+1   #获取页数的长度,由于正则匹配的时候,匹配到除本页以外的所有页数url不匹配,所以+1
    page

    首先建立空的列表,以便存放待会爬出来的数据。

    content=[]    #建立空的列表,存放数据
    title=[]    
    url=[]
    media=[]
    time=[]

     然后,开始爬取所需要的文本,因为知道了所有的页数有6页,所以,采取for循环来爬取。

    由上图可知,所需爬取的内容包括:内容(content)、题目(title)、网址(url)、媒体(media)、日期(time)。

    经查看这6页的源代码,发现,每篇文章所需爬取的信息所在的区域是一样的,所以,采用for循环的方法,一键爬取。

     

    所爬取得网页有6页,如上图所示: 可知道,每一页的网址,只有page改变了。因此可以for循环页面网址。

    for i in range(page):
        baseurl ="https://news.sogou.com/news?oq=%C1%BD%B0%B6%B9%D8%CF%B5&mode=1&manual=&stj0=8&query=%C1%BD%B0%B6%B9%D8%CF%B5%B7%A2%D5%B9%C7%B0%BE%B0&stj=8%3B0%3B0%3B0&stj2=0&stj1=0&hp=0&time=0&hp1=&sut=18021&lkt=0%2C0%2C0&ri=8&sst0=1541664088389&sort=1&page="+str(i)+"&w=01025001&dr=1"      #网址循环,6页的网址
        #print(i,baseurl)
        r = requests.get(baseurl)
        soup =BeautifulSoup(r.text,"html.parser")    #bs4解析网址
        driver.get(baseurl)
        #print(i,baseurl)
        title1 = driver.find_elements_by_xpath("//h3[@class='vrTitle']/a")   #模拟鼠标点击方法,获取标题
        for a in title1:
            title.append(a.text)
            
        data=str(soup.find_all(name = "h3",attrs = {"class":"vrTitle"}))    #bs4方法,获取每篇文章的url所在区域下的网页解析
        url1= re.findall(r'<a href="(.*?)" ',data)    #正则匹配出每篇文章的url,data的格式要求是文本
        for a in url1:
            url.append(a)
            #print(a)
            
        for b in soup.find_all(name = "p",attrs = {"class":"news-from"}):   #bs4方法,获取每篇文章的媒体类型和发布日期
            temp = b.get_text().strip()
            media.append(temp.split("\xa0")[0])
            time.append(temp.split("\xa0")[1])
            #print(media)
            #print(time)
        
        content1 = driver.find_elements_by_xpath("//p[@class='news-txt']/span")    #模拟鼠标点击方法,获取每篇文章的内容
        for result in content1:
            content.append(result.text)
            #print(result.text)

    最后、建立一个excel文档储存文章的内容(content)、题目(title)、网址(url)、媒体(media)、日期(time)。 

    df = pd.DataFrame(columns=["content","title","url","media","time"])   #建立文档
    
    df["content"]= content     #保存每一列数据
    df["title"]= title   
    df["url"] = url
    df['media'] = media
    df["time"] = time
    
    df.to_excel("爬虫.xlsx",index=False)      #保存excel

    最后所爬取的结果如下图所示:

     

     

     

    承接python、R、sql、spss作业代写:数据分析、数据挖掘、数据爬虫、机器学习、模型代跑、算法优化

    https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111deb9xAUhJ&ft=t&id=634285173072

    展开全文
  • Python——实现网页模拟键盘输入和鼠标点击一.安装selenium库1.1 win+R打开输入窗口1.2 输入cmd,点击确定1.3 输入代码:二.以谷歌浏览器为例,配置环境2.1打开谷歌浏览器,查看当前浏览器的版本2.2 输入谷歌浏览器...

    一.安装selenium库

    1.1 win+R打开输入窗口

    1.2 输入cmd,点击确定

    1.3 输入代码:

    pip install selenium
    

    二.以谷歌浏览器为例,配置环境

    2.1打开谷歌浏览器,查看当前浏览器的版本

    在这里插入图片描述

    2.2 输入谷歌浏览器插件地址:

    http://chromedriver.storage.googleapis.com/index.html

    2.3 选择与当前浏览器匹配的插件并下载。

    (注意:点进这个大类后,还需要看自己电脑的系统选择具体的插件)
    在这里插入图片描述

    2.4将下载好的文件解压,并将解压后的.exe放到自己python软件的Scripts目录下。

    三.代码解析

    from selenium import webdriver
    
    # 创建浏览器对象
    options = webdriver.ChromeOptions()
    browser = webdriver.Chrome(options=options)
    
    # 获取待访问的网址
    browser.get("http://www.baidu.com")
    
    '''
        1.打开网页,将浏览器调整为开发者模式
        2.找到需要操作的地方对应的代码
        3.例如这里是根据id来执行操作的
    '''
    # 发送文字至目标id
    browser.find_element_by_id("kw").send_keys("hello world")
    # 点击目标id
    browser.find_element_by_id("su").click()
    

    四.参考

    链接:代码实现网页模拟鼠标点击和键盘输入

    展开全文
  • 一,爬取目标 ... 二,需求分析 ...需求很简单,就是爬取所有数据。...当然,也可以顺便提供一个,搜索某个关键词之后,爬取所有...2,网页里面的搜索框(可选功能) 3,选项按钮 默认页面中,信息类型 和选择时间 都..

    一,爬取目标

    http://zb.yfb.qianlima.com/yfbsemsite/mesinfo/zbpglist

     

    二,需求分析

    需求很简单,就是爬取所有数据。

    当然,也可以顺便提供一个,搜索某个关键词之后,爬取所有数据的功能。

    难点在于,无论点哪里,url看起来永远是一样的,这就增大了爬虫的难度

    爬虫需要做的事情:

    1,爬取目标是ajax页面,需要selenium+无头浏览器

    2,网页里面的搜索框(可选功能)

    3,选项按钮

    默认页面中,信息类型 和 选择时间 都不是选全部,要想爬取所有数据,需要改这2个选项。

    4,选择页面

     

    三,关键技术

    1,动态网页:selenium+无头浏览器

    phantomjs.exe已经不能用了,所以这里用的是chromedriver.exe

    安装selenium,然后下载chromedriver.exe放到c盘根目录,如下代码即可用它打开网页

    base_url = "http://zb.yfb.qianlima.com/yfbsemsite/mesinfo/zbpglist"
    driver = webdriver.Chrome(executable_path=r'C:\chromedriver.exe', options=chrome_options,service_args=['--load-images=no'])
    driver.get(base_url)

    2,选项按钮:find_element_by_xpath

    查看网页源码,搜索信息类型

    于是我们就有了点击“全部”按钮的代码:

    select_type_box = driver.find_element_by_xpath("//ul[@class='select_type_box clearfix']/li[1]")
    select_type_box.click()

    同理,选择时间

    选择时间的代码:

    select_time_box = driver.find_element_by_xpath("//ul[@class='fl select_time_box']/li[1]")
    select_time_box.click()

    3,下一页:onclick、JS分析、浏览器抓包

    本来我以为很简单:

    next_page = driver.find_element_by_xpath("//div[@class='pagination']/ul[1]/li[11]")
    next_page.click()

    然而执行报错:Element is not clickable at point

    也就是说,无头浏览器可以轻松点击button,但是对onclick却没那么容易。

    于是,我开始扒拉JS,F12进调试模式,可以看到一些东西,这个网站只能看到3个js

    搜索了一些,并没有找到page函数,不过在网页源码中倒是找到了page函数

    这里发现了一个链接!!!

    我斗胆猜测,searchword就是搜索框,于是试了一下

    http://zb.yfb.qianlima.com/yfbsemsite/mesinfo/zbpglist?searchword=5G

    果然可以!

    同样的思路,又失败了,再也找不到类似的链接了。

    于是我又在网上找资料,找到一篇讲浏览器抓包的文章:https://blog.csdn.net/weixin_39610722/article/details/110960576

    先打开跟踪,然后点击第4页:

    找到URL,右键copy as cURL,内容如下:

    curl 'http://zb.yfb.qianlima.com/yfbsemsite/mesinfo/zbpglist' \
      -H 'Connection: keep-alive' \
      -H 'Cache-Control: max-age=0' \
      -H 'Upgrade-Insecure-Requests: 1' \
      -H 'Origin: http://zb.yfb.qianlima.com' \
      -H 'Content-Type: application/x-www-form-urlencoded' \
      -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36' \
      -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
      -H 'Referer: http://zb.yfb.qianlima.com/yfbsemsite/mesinfo/zbpglist' \
      -H 'Accept-Language: zh-CN,zh;q=0.9' \
      -H 'Cookie: JSESSIONID=C20E9758652DE1F141E51B349D4AE839; __jsluid_h=2b424c9697bd9692d2ad1451300a9c75; Hm_lvt_a31e80f5423f0ff316a81cf4521eaf0d=1610549640; pageSize=15; keywords=%E5%8D%83%E9%87%8C%E9%A9%AC%E6%8B%9B%E6%A0%87; keywordvaluess=""; laiyuan=3; Hm_lvt_0a38bdb0467f2ce847386f381ff6c0e8=1610550267; Hm_lpvt_0a38bdb0467f2ce847386f381ff6c0e8=1610550267; Hm_lvt_5dc1b78c0ab996bd6536c3a37f9ceda7=1610550268; Hm_lpvt_5dc1b78c0ab996bd6536c3a37f9ceda7=1610550268; UM_distinctid=176fc46d0a65b3-0c99d08cd43d87-31346d-e1000-176fc46d0a7d20; gr_user_id=97220f81-4919-4a9d-a198-24b3caf49796; pageNo=4; Hm_lpvt_a31e80f5423f0ff316a81cf4521eaf0d=1610560460' \
      --data-raw 'pageNo=7&kwname=&pageSize=15&ipAddress=122.96.44.71&searchword=&searchword2=&hotword=&provinceId=&provinceName=&areaId=&areaName=&infoType=0&infoTypeName=&noticeTypes=&noticeTypesName=&secondInfoType=&secondInfoTypeName=&timeType=5&timeTypeName=%E8%BF%91%E4%B8%80%E5%B9%B4&searchType=2&clearAll=false&e_keywordid=&e_creative=&flag=0&source=baidu&firstTime=1' \
      --compressed \
      --insecure

    还没来得及仔细看,一眼就看出来里面有这么一个式子:pageNo=4

    我斗胆猜测,这就是我们要找的东西了,试了一下http://zb.yfb.qianlima.com/yfbsemsite/mesinfo/zbpglist?pageNo=4,果然可以!

    同理,我们还得到了infoType和timeType

    于是,我们发现,对JS彻底分析之后,就不需要啥爬虫了,直接按顺序读html即可。

    然后我发现,不管搜什么,不管筛选什么,最多都只显示30页,多的就不显示了。

    新一轮的较量正在酝酿。。。

    首先,我得到了这个链接

    http://zb.yfb.qianlima.com/yfbsemsite/mesinfo/zbpglist?infoType=0&timeType=0&searchword=5G&pageNo=1&pageSize=1000

    然后我一想,我都一页1000条了,我还要pageNo干啥!

    http://zb.yfb.qianlima.com/yfbsemsite/mesinfo/zbpglist?infoType=0&timeType=0&searchword=5G&pageSize=1000

    这个数据足够大的话,该关键词搜索的全部结果就能显示出来了,并没有查询数量限制。

     

    四,代码

    爬虫草稿:

    # coding=utf-8
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    base_url = "http://zb.yfb.qianlima.com/yfbsemsite/mesinfo/zbpglist?infoType=0&timeType=0&searchword=5G&pageNo=1"
    driver = webdriver.Chrome(executable_path=r'C:\chromedriver.exe', options=chrome_options,service_args=['--load-images=no'])
    driver.get(base_url)
    select_type_box = driver.find_element_by_xpath("//ul[@class='select_type_box clearfix']/li[1]")
    select_type_box.click()
    select_time_box = driver.find_element_by_xpath("//ul[@class='fl select_time_box']/li[1]")
    select_time_box.click()
    print(driver.page_source)
    while True:
        next_page = driver.find_element_by_xpath("//div[@class='pagination']/ul[1]/li[11]")
        next_page.click()
        print(driver.page_source)
    driver.close()

    因为暂时不需要这样爬了,所以代码先不更了。

    展开全文
  • 能不能写一个程序(不一定用python),向”你画我猜”网页游戏的服务器发送命令,模拟人用鼠标点击屏幕绘图。 (ps:我试过控制鼠标模拟人的操作,但是网页相应太慢,跟不上程序的速度,能不能直接向服务器发送命令...
  • 为了不想重复点击抢购操作,用splinter模块来模拟鼠标点击操作,办法很笨,抢购效果差,但也成功过,只是没下决心买就取消了订单。这应该是学python第一个小程序,运行了还是有点小开心的。贴上代码,留待以后看看。...
        前阵子,想抢太魅蓝NOTE3,在京东上点击抢购了好多下,果然没抢到。然后又关注到了乐视2,性价比高,但确实 没有魅蓝好看,电池也小。为了不想重复点击抢购操作,用splinter模块来模拟鼠标点击操作,办法很笨,抢购效果差,但也成功过,只是没下决心买就取消了订单。这应该是学python第一个小程序,运行了还是有点小开心的。贴上代码,留待以后看看。
    
    参照了教程http://www.mamicode.com/info-detail-1136595.html,再加修改。
    
    前提要先安装浏览器驱动,具体驱动下载页面至splinter官方文档http://splinter.readthedocs.io/en/latest/ 下载安装,文档很短,看完就知道简单运用了
    
    #-*- coding:utf-8 -*-
        '''乐视2手机抢购脚本文件,渠道:京东'''
        from splinter.browser import Browser
        import time
    
        #登录页
        def login(b):  #登录京东
            b.click_link_by_text("你好,请登录")
            time.sleep(3)
            b.fill("loginname","account*****")  #填写账户密码
            b.fill("nloginpwd","passport*****")
            b.find_by_id("loginsubmit").click()
            time.sleep(3)
            return b
    
        #订单页
        def loop(b):  #循环点击
            try:
                if b.title=="订单结算页 -京东商城":
                    b.find_by_text("保存收货人信息").click()
                    b.find_by_text("保存支付及配送方式").click()
                    b.find_by_id("order-submit").click()
                    return b
                else:  #多次抢购操作后,有可能会被转到京东首页,所以要再打开手机主页
                    b.visit("http://item.jd.com/2707976.html")
                    b.find_by_id("choose-btn-qiang").click()
                    time.sleep(10)
                    loop(b)  #递归操作
            except Exception as e: #异常情况处理,以免中断程序
                b.reload()  #重新刷新当前页面,此页面为订单提交页
                time.sleep(2)
                loop(b)  #重新调用自己
    
    
        b=Browser(driver_name="chrome") #打开浏览器
        b.visit("http://item.jd.com/2707976.html")
        login(b)
        b.find_by_id("choose-btn-qiang").click() #找到抢购按钮,点击
        time.sleep(10)  #等待10sec
        while True:
            loop(b)
            if b.is_element_present_by_id("tryBtn"): #订单提交后显示“再次抢购”的话
                b.find_by_id("tryBtn").click()  #点击再次抢购,进入读秒5,跳转订单页
                time.sleep(6.5)
            elif b.title=="订单结算页 -京东商城": #如果还在订单结算页
                b.find_by_id("order-submit").click() 
    
            else:
                print('恭喜你,抢购成功')
                break
    此程序一会就用不到乐视2的抢购,但稍加修改可以在京东抢购其他手机。程序简单,成功率低,算一个很低级的抢购脚本了,对于刚学习pyhton和编程的我,还是很有意思的。
    
    展开全文
  • Python 鼠标单击小程序

    2020-05-04 10:29:30
    需求呢,公司内部网页学习平台,视频播放没10分钟需要鼠标点击一次,影响学习体验(或者说影响挂机刷分)。于是,就用python边学边写了个鼠标定时点击小程序,基本实现所有功能,算是交差,窗口如下。 设计思路 ...
  • pyautogui可以用来控制键盘鼠标模拟人为操作,从而实现某些需要人工操作才能控制的场景,比如某些应用软件的测试、不适合爬虫的网页内容获取等场景。还可以用来截取屏幕,它附带了简单的图像识别功能,通过事先保存...
  • python + selenium 模拟登陆b站

    千次阅读 2019-01-24 15:35:14
    文章目录截取验证码图片识别缺口模拟滑动爬坑代码相关优化参考资料 截取验证码图片 首先将鼠标移至小块处,会出现滑动后的图片(即原图) 利用selenium找到验证码图片所在元素 这样,我们就可以截取整个网页...
  • 网页进行爬取并另存时,遇到一个问题:selenium中键盘或是鼠标的操作都是以网页内的某个元素...这时就可用到pywin32这个包了,用来模拟键盘输入或鼠标点击。 下载地址:  https://sourceforge.net/projects/pyw...
  • Python+Selenium练习篇之25-鼠标右键

    万次阅读 热门讨论 2017-04-10 21:24:17
    网页上有些元素是支持右键来触发新的菜单,这里找一个百度首页,百度logo的右键,查看图片动作来模拟这个场景。 问题拆分: 1. 打开百度首页,找到logo,右键鼠标 2. 移动到菜单,查看图像,然后点击 核心问题,...
  • 10行Python代码实现Web自动化管控

    千次阅读 多人点赞 2020-08-09 15:50:28
    本博客将为各位分享Python Helium库,其是在 Selenium库基础上封装的更加高级的 Web 自动化工具,它能够通过网页端可见的标签、名称来和 Web 进行交互,据说比Selenium库简单50%,Helium库主要功能包括:模拟鼠标...
  • 但是脚本的模拟又不像手工操作,你想操作哪个元素,鼠标放上去点击就可以了;对于脚本来说,必须要先找到对应的元素,才能对元素进行操作。 首先,我们打开百度首页(http://www.baidu.com),在这个页面上有搜索的...
  • python钓鱼评论爬取

    2020-05-20 11:54:44
    #from selenium import webdriver#模拟点击鼠标点击网页库 #import time#时间 import requests#直接爬取网页库 def direct(secname): r=requests.get(secname) html=r.text rule="http://www.diaoy
  • from selenium import webdriver # 模拟鼠标点击 # 打开Firefox浏览器,模拟器 driver = webdriver.Chrome() driver = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver") ...
  • [Python学习笔记]爬虫

    2019-10-06 16:49:23
    要使用Python 抓取网页,首先我们要学习下面四个模块: 包 作用 webbrowser 打开浏览器获取指定页面;...启动并控制一个Web 浏览器,能够填写表单,并模拟鼠标点击。 小项目:利用webbrowser 模块的bilibi...
  • 目录 Selenium的使用场景 Selenium的注意事项 ...Selenium作为模拟人类操作浏览器的一个包在网页游戏等重复操作上有很大的应用,但最突出的是对爬虫的应用,当一些爬取的项目需要登录账户后才能获得时,且f...
  • 最近模拟鼠标点击网页来爬取数据,碰到安装pyhook的第三方库。在安装pyHook-1.5.1.win32-py2.7.exe时报错了。 报错的内容为:Python version 2.7 required, which was not found in the registry 这时候需要注册...
  • 本博客将为各位分享Python Helium库,其是在 Selenium库基础上封装的更加高级的 Web 自动化工具,它能够通过网页端可见的标签、名称来和 Web 进行交互,据说比Selenium库简单50%,Helium库主要功能包括:模拟鼠标...
  • Python基础学习笔记(6)

    2018-03-30 21:32:53
    Python编程快速上手》 从Web抓取信息 webbrowser:是Python自带的,打开浏览器获取指定页面。 ...selenium能够填写表单,并模拟鼠标这这个浏览器中点击。 1.利用webbrowser模块的mapIt...
  • python自动化之web抓取

    2017-07-26 20:37:00
    ''' 从web抓取数据: webbrowser:是python自带的,打开浏览器获取指定页面. ...selenium:启动并控制一个Web浏览器.selenium能够填写表单,并模拟鼠标在这个浏览器中点击 ''' import webbrowser webbrowser.o...
  • webbrowser:是 Python 自带的,打开浏览器获取指定页面。 requests:从因特网上下载...selenium 能够填写表单,并模拟鼠标 在这个浏览器中点击 1 利用webbrower模块的mapIt.py 你的程序需要做到: • 从...
  • python+selenium批量删除qq空间数据

    千次阅读 2020-01-31 12:05:11
    python 脚本的流程是:selenium 模拟登录网页版qq空间 → 点击进入留言板 → 鼠标移到“留言板设置”上 → 点击批量管理 → 点击“全选”选中这一页的10条留言→ 点击“删除选中的” → 刷新网页 → 从第二步...
  • python从web抓取信息

    2020-11-18 23:15:12
    Selenium:启动并控制浏览器,可以模拟鼠标在这个网页点击。 2. 通过request模块下载Web文件 调用 requests.get()下载该文件。 用’wb’调用 open(),以写二进制的方式打开一个新文件。 利用 Respose 对象的...
  • Python爬取Web信息的四个主要模块(轮子): (1)webbrowser:是Python自带的,用来打开...(4)selenium:启动并控制一个Web浏览器,该模块能够实现填写表单,模拟鼠标在页面的点击   webbrowser模块 能打开...
  • 需要的模块:  pythonweb抓取通过:  webbrowser:是python自带的,打开浏览器获取指定页面  requests:从因特网上下载文件和...selenium能够填写表单,并模拟鼠标在这个浏览器中点击 >>>这个在这...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
热门标签
关键字:

python模拟鼠标点击网页

python 订阅