精华内容
下载资源
问答
  • 以及使用selenium操作页面元素,实现点击、输入事件 所用技术 1.webmagic 添加需要爬取的url Spider.create(new MyProcessor()).addUrl("https://www.cnblogs.com/").thread(5).run(); 在process里面抓取符合...

    作者专注于Java、架构、Linux、小程序、爬虫、自动化等技术。 工作期间含泪整理出一些资料,微信搜索【程序员高手之路】,回复 【java】【黑客】【爬虫】【小程序】【面试】等关键字免费获取资料。技术交流、项目合作可私聊。 

    目录

    前言

    所用技术

    1.webmagic

    2.selenium


    前言

    网上的爬虫、自动化一般都是使用python来做的;

    身为java程序员,当然要不甘示弱!

    所以就写了java爬虫、自动化系列文章,供众多java程序员参考!

    首先看一下自动化操作百度首页的图像,模拟输入、点击事件(源码地址:做自动化必备工作以及hello world代码):

    所用技术

    1.webmagic

    添加需要爬取的url

    Spider.create(new MyProcessor()).addUrl("https://www.cnblogs.com/").thread(5).run();

    在process里面抓取符合条件的内容 

     public void process(Page page) {
            //判断链接是否符合http://www.cnblogs.com/任意个数字字母-/p/7个数字.html格式
            if(!page.getUrl().regex("http://www.cnblogs.com/[a-z 0-9 -]+/p/[0-9]{7}.html").match()){
               //加入满足条件的链接
                page.addTargetRequests(
                        page.getHtml().xpath("//*[@id=\"post_list\"]/div/div[@class='post_item_body']/h3/a/@href").all());
    
            }else{
                *[@id="post_list"]/div[5]/div[2]/h3/a
                //获取页面需要的内容
                System.out.println("抓取的内容:"+
                        page.getHtml().xpath("//*[@id=\"Header1_HeaderTitle\"]/text()").get()
                );
                count ++;
            }
        }

    2.selenium

    以今日头条为例对页面元素(“关注”按钮)进行点击

    设置驱动

    System.setProperty("webdriver.chrome.driver", "CHROMEPATH/chromedriver.exe");
            

    初始化driver

    WebDriver driver = new ChromeDriver();

    进入页面

    driver.get("https://www.toutiao.com/c/user/relation/4492956276/?tab=followed#mid=4492956276");

     获取所需元素

    WebElement submit = li.findElement(By.cssSelector(".submit"));

     点击

    submit.click();

    作者专注于Java、架构、Linux、小程序、爬虫、自动化等技术。 工作期间含泪整理出一些资料,微信搜索【程序员高手之路】,回复 【java】【黑客】【爬虫】【小程序】【面试】等关键字免费获取资料。技术交流、项目合作可私聊。

    展开全文
  • WebView获取当前网页页面元素

    千次阅读 2016-03-13 01:55:23
    今天简单总结一下,如何通过WebView来获取Html的页面元素。第一步,首先用WebView加载一个Html页面NSString *str=@"http://........."; UIWebView *webView = [[UIWebView alloc] initWithFrame:...

    今天简单总结一下,如何通过WebView来获取Html的页面元素。

    第一步,首先用WebView加载一个Html页面

    NSString *str=@"http://.........";
        UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT-44)];
        webView.delegate = self;
        NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:str]];
        [self.view addSubview: webView];
        [webView loadRequest:request];
    当然,可以在webView的加载过程中用我们自己的Loading....(在代理方法中实现)

    先来看一下webView的几个代理

    -(void)webViewDidStartLoad:(UIWebView *)webView
    {
        [[BKLoadingView shared] startLoading];
    }
    要获取Html的元素,首先要等页面加载完成,就是主要在下面方法中实现
    - (void)webViewDidFinishLoad:(UIWebView *)webView
    {
        [[BKLoadingView shared] endLoading];
        //此处获取Html页面元素
    }
    页面加载失败的代理
    - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
    {
        [[BKLoadingView shared] endLoading];
        NSLog(@"错误信息:%@",[error localizedDescription]);
        if([error code] == NSURLErrorCancelled)
        {   //页面还没有加载完成有发生其它情切或者加载其他页面
            //这时会走这个方法报NSURLErrorCancelled -999错
            //并不影响正常,所以加上这个就可以了
            return;
        }
    }

    第二步,就可以在我们刚才所说的webViewDidFinishLoad方法中获取页面元素了

    1.获取当前页面的title

    NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
    //NSLog(@"页面title:%@",title);
    2.获取当前页面路径
    NSString *currentURL = webView.request.URL.absoluteString;
    NSLog(@"currentURL===%@",currentURL);
    3.获取当前页面Html
    NSString *lJs = @"document.documentElement.innerHTML";
    NSString *currentHTML = [webView stringByEvaluatingJavaScriptFromString:lJs];
    NSLog(@"currentHTML======%@",currentHTML);
    4.使用正则表达式,去掉html中的标签元素,获得纯文本
    //content是根据网址获得的网页源码字符串(就是currentHTML)
    NSRegularExpression *regularExpretion=[NSRegularExpression regularExpressionWithPattern:@"<[^>]*>" options:0 error:nil];
    //替换所有html和换行匹配元素为"-"
    content=[regularExpretion stringByReplacingMatchesInString:content options:NSMatchingReportProgress range:NSMakeRange(0,content.length) withTemplate:@"-"];
    //根据正则表达式把多个"-"匹配为一个"-"
    regularExpretion=[NSRegularExpression regularExpressionWithPattern:@"-{1,}" options:0 error:nil] ;
    content=[regularExpretion stringByReplacingMatchesInString:content options:NSMatchingReportProgress range:NSMakeRange(0, content.length) withTemplate:@"-"];
    //把\t和\n换成@""
    regularExpretion=[NSRegularExpression regularExpressionWithPattern:@"\t|\n" options:0 error:nil] ;
    content=[regularExpretion stringByReplacingMatchesInString:content options:NSMatchingReportProgress range:NSMakeRange(0, content.length) withTemplate:@""];
    //分成数组
    NSArray *arr=[NSArray array];
    content=[NSString stringWithString:content];
    arr =  [content componentsSeparatedByString:@"-"];
    NSMutableArray *marr=[NSMutableArray arrayWithArray:arr];
    for (NSString *str in arr)
    {
        NSString *str1=[str stringByReplacingOccurrencesOfString:@" " withString:@""];
        if (str1.length==0)
        {
            [marr removeObject:str];
        }
    }
    NSLog(@"marr===%@",marr);
    当然可以根据正则表达式自己随意替换,根据不同符号分组

    第三,我们可以获取webView上面按钮的点击事件

    UIWebView的协议里面有这么个方法,可以获取它加载的网页上面的事件,比如单击了图片,单击了按钮等等

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    {
       //判断是否是单击
       if (navigationType == UIWebViewNavigationTypeLinkClicked)
       {
           NSURL *url = [request URL];
           if([[UIApplication sharedApplication]canOpenURL:url])
           {
               [[UIApplication sharedApplication]openURL:url];
           }
           return NO;
       }
       return YES;
    }

    这样写了之后,点击按钮之后就不会用当前的UIWebView来加载网络上的网页,而是调用系统的Safari来打开。

    注意:最后一点要返回YES,否则UIWebView刚开始将一片空白,这是因为第一次加载的时候也是UIWebView请求一个链接,如果返回NO,就不会去加载了。还可以对url的内容进行判断,看是什么请求,然后再确定是否返回YES。
    接口,如果为webView添加了delegate对象并实现该接口,那么在webView加载任何一个frame之前都会delegate对象的该方法,该方法的返回值用以控制是否允许加载目标链接页面的内容,返回YES将直接加载内容,NO则反之。并且UIWebViewNavigationType枚举,定义了页面中用户行为的分类,包括:
    UIWebViewNavigationTypeLinkClicked,用户触击了一个链接。
    UIWebViewNavigationTypeFormSubmitted,用户提交了一个表单。
    UIWebViewNavigationTypeBackForward,用户触击前进或返回按钮。
    UIWebViewNavigationTypeReload,用户触击重新加载的按钮。
    UIWebViewNavigationTypeFormResubmitted,用户重复提交表单

    UIWebViewNavigationTypeOther,发生其它行为。

    拼接的Html最后加的按钮的方法如下:
    NSURL * path = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"source_page_button" ofType:@"png"]];

    [strReturn appendString:[NSString stringWithFormat:@"<div style='display:block;text-align:center;margin:0 auto;'><a href='%@'><img src='%@'></a></div>",_url,path]];

    获取点击的按钮的方法名

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    {
        NSString *url = request.URL.absoluteString;
        NSLog(@"url:%@",url);
        NSRange range = [url rangeOfString:@":"];
        NSString *method = [request.URL.absoluteString substringFromIndex:range.location + 1];
        NSLog(@"method:%@",method);
        
        return YES;
    }






    展开全文
  • H5里,我们自己的页面引用类似于别人的掌上公交,天气这类的页面,能获取到对方的页面元素并进行修改样式吗?
  • xpath获取步骤: 1、打开火狐浏览器; 2、选择 “打开菜单” -> "附加组件" 如下图所示: ...3、在 “搜素所有附加组件” 输入框中搜索Firebug ...7、打开要获取Xpath的网页并进行一下操作,即可获得元素XPath:

    xpath获取步骤:

    1、打开火狐浏览器;

    2、选择  “打开菜单” -> "附加组件"  如下图所示:


    3、在 “搜素所有附加组件” 输入框中搜索Firebug


    4、搜索到 Firebug 单击安装:


    5、用以上方法搜索 FirePath 并安装:

     

    6、重启浏览器,插件安装成功;

    7、打开要获取Xpath的网页并进行一下操作,即可获得元素XPath:







    展开全文
  • iOS获取当前网页页面元素

    千次阅读 2014-08-14 16:44:32
    iOS-获取当前网页的 url 和 title 和 html [编辑].h文件 @property (strong,nonatomic)UIWebView *webView; @property (strong,nonatomic)NSString *currentURL; @property (strong,nonatomic)NSString *...

    iOS-获取当前网页的 url 和 title 和 html


    .h文件

    @property (strong,nonatomic)UIWebView *webView;  
    @property (strong,nonatomic)NSString *currentURL;  
    @property (strong,nonatomic)NSString *currentTitle;  
    @property (strong,nonatomic)NSString *currentHTML;  
    


    .m文件

    -(void) webViewDidFinishLoad:(UIWebView *)webView {  
       [UIApplication sharedApplication].networkActivityIndicatorVisible =NO;  
       self.title =  [webView stringByEvaluatingJavaScriptFromString:@"document.title"];//获取当前页面的title  
    
      self.currentURL = webView.request.URL.absoluteString;  
       NSLog(@"title-%@--url-%@--",self.title,self.currentURL);  
    
      NSString *lJs = @"document.documentElement.innerHTML";//获取当前网页的html  
      self.currentHTML = [webView stringByEvaluatingJavaScriptFromString:lJs];  
    }
    


    iOS使用正则表达式去掉html中的标签元素,获得纯文本

    //content是根据网址获得的网页源码字符串

    NSRegularExpression *regularExpretion=[NSRegularExpression regularExpressionWithPattern:@"<[^>]*>|\n"
                                                                                       options:0
                                                                                         error:nil];
    

    //替换所有html和换行匹配元素为"-"

       content=[regularExpretion stringByReplacingMatchesInString:content 
                                                                             options:NSMatchingReportProgress 
                                                                                range:NSMakeRange(0, content.length) withTemplate:@"-"];
    

    //把多个"-"匹配为一个"-"

       regularExpretion=[NSRegularExpression regularExpressionWithPattern:@"-{1,}" options:0 error:nil] ;
       content=[regularExpretion stringByReplacingMatchesInString:content
                                                                                         options:NSMatchingReportProgress 
                                                                                            range:NSMakeRange(0, content.length) withTemplate:@"-"];
    

    //根据"-"分割到数组

       NSArray *arr=[NSArray array];
       content=[NSString stringWithString:content];
       arr =  [content componentsSeparatedByString:@"-"];
       NSMutableArray *marr=[NSMutableArray arrayWithArray:arr];
       [marr removeObject:@""];
       return  marr;
    


    iOS 获取UIWebView上面的按钮点击事件

    很多文章都说iOS的UIWebView比较耗内存,在我的项目中,最开始我也是用UIWebView来加载网页的。刚开始加载的是自己拼接成的Html,后来在Html中加入一个按钮,点击之后用当前的UIWebView去加载网络上的网页。程序跑起来发现非常耗内存,加载几个网上的网页之后就爆内存警告了,不处理的话很容易被评估拒掉app。后来就改成用系统的safari浏览器来打开网络上的网页,把着耗内存的工作交给苹果自己自带的浏览器来处理,就避免了我这个app crash。但是怎么获取网页上这个按钮点击的事件呢,这个按钮本身就绑定了一个url,怎么让它点击之后当前的UIWebView不去load这个url呢。

    后来查了一下资料,发现UIWebView的协议里面有这么个方法,可以获取它加载的网页上面的事件,比如单击了图片,单击了按钮等等。

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    {
    //判断是否是单击
       if (navigationType == UIWebViewNavigationTypeLinkClicked)
       {
           NSURL *url = [request URL];
           if([[UIApplication sharedApplication]canOpenURL:url])
           {
               [[UIApplication sharedApplication]openURL:url];
           }
           return NO;
       }
       return YES;
    }
    

    拼接的Html最后加的按钮的方法如下:
    File:Dev_2014_08_14_qinyk_webview1.jpg

    这样写了之后,点击按钮之后就不会用当前的UIWebView来加载网络上的网页,而是调用系统的Safari来打开。

    注意:最后一点要返回YES,否则UIWebView刚开始将一片空白,这是因为第一次加载的时候也是UIWebView请求一个链接,如果返回NO,就不会去加载了。还可以对url的内容进行判断,看是什么请求。

    接口,如果为webView添加了delegate对象并实现该接口,那么在webView加载任何一个frame之前都会delegate对象的该方法,该方法的返回值用以控制是否允许加载目标链接页面的内容,返回YES将直接加载内容,NO则反之。并且UIWebViewNavigationType枚举,定义了页面中用户行为的分类,包括

    1. UIWebViewNavigationTypeLinkClicked,用户触击了一个链接。
    2. UIWebViewNavigationTypeFormSubmitted,用户提交了一个表单。
    3. UIWebViewNavigationTypeBackForward,用户触击前进或返回按钮。
    4. UIWebViewNavigationTypeReload,用户触击重新加载的按钮。
    5. UIWebViewNavigationTypeFormResubmitted,用户重复提交表单
    6. UIWebViewNavigationTypeOther,发生其它行为。
    展开全文
  • 在做移动端或者其他无限下拉加载时会遇到不断插入dom的场景,随着dom的增多页面会出现卡顿,遇到这种情况开发者会采取一系列的优化措施,比如复用dom等,那么到底为什么会出现卡顿呢?本文将探讨这个疑问。 网页...
  • 网页元素名称的规范性有助于团队内部成员的沟通,同时还能够提高后期的维护性,网页元素的命名主要是针对id和class进行的,针对网页元素的命名没有业界标准,但有一些大家公认的规则。 一般情况下id我们通常采用...
  • 如果selenium 满足不了,那有什么方法可以获取页面上所有可以点击的元素,比如说:广告 、导航、也就是说只要这个页面可以点击的,我都要获取到,我应该如何操作或者有没有什么学习文档。有大佬可以指点下吗 ?感谢...
  • 如图所示: 第二张图的背景图片变小了(布局混乱) 第一张图是预期效果 ...原因是没有宽度和高度撑开页面。比如登录框的大小没有变,背景图片的大小却变了。在body的css样式里添加宽高即可。 比如: ...
  • C# 访问网页并对页面上的元素进行抓取第一步请求页面新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中...
  • 不做那种响应式,而是做成无论网页怎么缩小,里面的元素是不会改变位置的,一般页面大小改变会有些元素位置。 只需加一个属性: viewport属性控制窗口大小 &lt;meta name="viewport" content="...
  • 网页各部分元素常用命名

    千次阅读 2016-05-06 02:26:07
    为了网页后期维护,使用统一的元素命名方式是很有必要的,因此记录下常用元素命名 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:...
  • 35套用于扁平化网页设计的图标和页面元素《下集》  扁平化设计是指舍弃渐变、阴影、高光等拟物化的视觉效果,从而打造出一种看上去更加平面的界面风格。扁平化的网页设计更适合用于需要同时支持多种屏幕尺寸的响应...
  • &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&...MutationObserver 监听页面的DOM元素是否发生了变化 (调试网页劫持)&lt;/title&gt; &lt;style&gt; body {
  • 24种页面元素与iDo网页设计工具箱

    千次阅读 2011-07-01 17:06:00
     视觉效果包括网页的背景、区域的背景、各种装饰,而显示内容则包括各种类型的列表、文本内容、标题、图片、动画和幻灯片等,视觉效果和现实内容构成了整个网页,我们看到的网页的显示效果,其实就是由视觉效果和...
  • 获取网页指定元素和内容

    千次阅读 2018-09-05 18:08:43
    一、利用jsoup抓取网页,并获得指定dom元素 jsoup jar 下载地址 https://jsoup.org/download     try { Document doc = null; doc = Jsoup.connect("http://www.163.com/xxx.html")....
  • 网页审查元素

    千次阅读 2016-12-12 00:48:40
    一开始我打开审查元素怎么也看不到自己设的盒子模型的那些数据,今天发现只有在你指定位置点击,才能看到你指定的设置
  • 浏览器开发者模式获取页面元素

    千次阅读 2019-04-13 15:50:02
    这时通过浏览器开发者模式获取页面元素非常方便,一是能快速获取页面元素、二是能查看页面元素相对路径便于分类,下面以Google为例介绍 1、首先打开Google浏览器,点击键盘F12 2、打开目标网站,在开发者模式中...
  • webView 加载网页 删除网页元素

    千次阅读 2016-10-11 15:29:22
    // getElementById 得到网页元素, 删除var help_menu = document.getElementById('help-menu'); help_menu.parentNode.removeChild(help_menu); // getElementsByClassName,再遍历所属class网页元素, 删除var ...
  • 打开浏览器任意一个页面,右键单击页面有两个很相似的选项:“查看网页源代码(CTRL+U)”和"检查(审查元素F12或者CTRL+SHIFT+I)",之前一直认为这两项的代码内容没有区别,最近发现两者是有区别的。 二、网页中...
  • 在现代浏览器(如 Google Chrome )中,F12或者右键检查元素的下,可以方便的查看并对网页代码进行调试 为了安全起见,可以利用 JavaScript 禁止这种行为。 window.onload = function () { //禁止F12 $(&...
  • * 当WebView加载网页时获取该网页中的内容. * 参考资料: * http://www.maxters.net/2012/02/android-webview-get-html-source/ */  public class MainActivity extends Activity {   private ...
  • selenium 常见方法和页面元素的操作

    千次阅读 2017-03-01 11:55:35
    页面元素有id属性时,最好尽量用id来定位。但由于现实项目中很多程序员其实写的代码并不规范,会缺少很多标准属性,这时就只有选择其他定位方法。 xpath很强悍,但定位性能不是很好,所以还是尽量少用。如果...
  • 页面之所以是动态的,其实不仅仅是因为他是具有js的动态效果的,还有一部分是因为他的数据是动态的,所以页面才会显得很有活性,但是很多的时候获取数据是一个很恶心的事情,动不动就拿不到数据,作为一个前端,其实...
  • 2015年6.17号,在线旅游网站蚂蜂窝出现了抢粽子活动:页面会出现一些粽子,点击粽子,即抢到。很明显,这是一个重复性的劳动,可以代码自动刷新页面,点击页面上的粽子。 本方案中选择了开发一款Chrome浏览器插件...
  • 获取页面元素的5种方法

    千次阅读 2018-12-13 14:51:02
    为什么要获取页面元素 例如:我们想要操作页面上的某部分(显示/隐藏,动画),需要先获取到该部分对应的元素,才进行后续操作 1. 根据id获取元素 // get 获取 Element 元素 By 通过 Id 标识 var div = document....
  • 代码片段内容: ... 欢迎页面 ${imagesPath}/student/student_footer_logo.png" style="margin-top:15px;"/> 技术支持:上海互宝能源科技有限责任公司
  • js浏览器页面或页面元素全屏操作

    千次阅读 2015-10-29 17:24:23
    js浏览器页面或页面元素全屏操作
  • 为了满足我们网页排版的需求,HTML语言提供了3种常用的列表元素,分别为ul元素(无序列表)、ol元素(有序列表)以及dl元素(定义列表),接下来将对这3种元素进行讲解。 #1.ul元素 无序列表是网页中最常用的列表,之所以...
  • Python自动化获取页面元素

    千次阅读 2019-07-17 10:59:43
    一、获取页面title #获取当前页面的标题显示的字段 title from selenium import webdriver import time browser = webdriver....#打印网页标题 print(browser.title) #输出内容:百度一下,你就知道 二、获取页...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 288,965
精华内容 115,586
关键字:

常见的网页页面元素