精华内容
下载资源
问答
  • 解析HTML

    千次阅读 2012-07-26 14:14:26
    几周前,由于需要从网页中提取一部分内容我们就一直在寻找一个可以在iPhone可用的简单的html解析器。我们在该贴中找到了一个名为hpple的漂亮封装。使用该库的简单步骤如下: 包含并链接libxml2: 展开...
    
    

    几周前,由于需要从网页中提取一部分内容我们就一直在寻找一个可以在iPhone可用的简单的html解析器。我们在该贴中找到了一个名为hpple的漂亮封装。使用该库的简单步骤如下:

    包含并链接libxml2:

    1. 展开Targets
    2. 双击项目名
    3. 选择所有配置
    4. 搜索Header Search Path
    5. 加入一行并选中recursive选项: ${SDKROOT}/usr/include/libxml2
    6. 搜索Other Linker Flag
    7. 加入一行:-lxml2

    截屏如下:

    html_include

    html_linking

    从如下地址下载源码:

    git clone git://github.com/topfunky/hpple.git

    将如下代码拖拽到项目中:

    TFHpple.h

    TFHpple.m

    TFHppleElement.h

    TFHppleElement.m

    XPathQuery.h

    XPathQuery.m

    就这些。接下来就可以试着写些代码了。

    1.  // Don't forget  
    2.  // #import "TFHpple.h"  
    3. NSData *htmlData = [[NSString stringWithContentsOfURL:[NSURL URLWithString: @"http://www.objectgraph.com/contact.html"]] dataUsingEncoding:NSUTF8StringEncoding];  
    4. TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlData];  
    5. //get the page title - this is xpath notation  
    6. NSArray *elements  = [xpathParser search:@"//h3"];   
    7. TFHppleElement *element = [elements objectAtIndex:0];  
    8. NSString *myTitle = [element content];  
    9. NSLog(myTitle);  
    10. [xpathParser release];  
    11. [htmlData release]; 

    完整的项目代码从此下载

     

    原文链接:http://blog.objectgraph.com/index.php/2010/02/24/parsing-html-iphone-development/

    展开全文
  • Java Android 解析html的demo

    千次下载 热门讨论 2012-03-18 16:23:01
    使用Jsoup解析html代码的示例。 以科资讯网站cnbeta为例,demo中点击按钮会获取cnbeta的首页html,然后使用Jsoup解析,在屏幕上显示当前页的所有文章标题及连接。 使用到的Jsoup的jar包也打包在内
  • iOS 解析 html

    千次阅读 2018-11-22 17:36:37
    在iOS开发中,app数据的来源,有可能是通过解析html。我一般是通过使用hpple三方库,来解析自己想要的数据。以下以解析新浪股票的某个模块为例,简单展示一下hpple的使用。 1. hpple的安装  查询了一下hpple的...

    在iOS开发中,app数据的来源,有可能是通过解析html。我一般是通过使用hpple三方库,来解析自己想要的数据。以下以解析新浪股票的某个模块为例,简单展示一下hpple的使用。

    1. hpple的安装 

    查询了一下hpple的版本信息,然后通过pod 将其集成到工程中。

    2. 要解析的内容

    解析的网址链接为 https://finance.sina.com.cn/stock/ ,下边红色框内为解析时显示的内容。我们要获取到每条新闻的标题、时间以及该条新闻对应的详情链接。

    3. 解析流程

    3.1 下边的代码片段即为以上新闻对应的html 部分(html格式都是一样的,为了避免代码片段太长,我将姚记扑克这条新闻之后的4条内容删除了)

    <ul class="list04">
        <li>
            <span>17:39</span>
            <p>
                <a target="_blank" title="光洋股份股东称减持不超过5.71% 此前11天10涨停" href="https://finance.sina.com.cn/stock/s/2018-11-22/doc-ihmutuec2669357.shtml">光洋股份股东称减持不超过5.71% 此前11天10涨停</a>
            </p>
        </li>
        <li>
            <span>17:25</span>
            <p>
                <a target="_blank" title="银河承销首单纾困私募债 特锐德控股股东获4亿" href="https://finance.sina.com.cn/stock/s/2018-11-22/doc-ihpevhck1477054.shtml">银河承销首单纾困私募债 特锐德控股股东获4亿</a>
            </p>
        </li>
        <li>
            <span>16:20</span>
            <p>
                <a target="_blank" title="11月22日上市公司晚间公告速递" href="https://finance.sina.com.cn/stock/s/2018-11-22/doc-ihmutuec2643347.shtml">11月22日上市公司晚间公告速递</a>
            </p>
        </li>
        <li>
            <span>16:05</span>
            <p>
                <a target="_blank" title="苏常柴A:近日出售江苏银行1000万股股票" href="https://finance.sina.com.cn/stock/s/2018-11-22/doc-ihpevhck1324957.shtml">苏常柴A:近日出售江苏银行1000万股股票</a>
            </p>
        </li>
        <li>
            <span>16:00</span>
            <p>
                <a target="_blank" title="正业科技收关注函 要求就利润分配预案等进行说" href="https://finance.sina.com.cn/stock/s/2018-11-22/doc-ihpevhck1312223.shtml">正业科技收关注函 要求就利润分配预案等进行说</a>
            </p>
        </li>
        <li>
            <span>15:33</span>
            <p>
                <a target="_blank" title="15亿买微信公号失败后 骅威文化实控人立即甩卖" href="https://finance.sina.com.cn/stock/s/2018-11-22/doc-ihmutuec2626264.shtml">15亿买微信公号失败后 骅威文化实控人立即甩卖</a>
            </p>
        </li>
    </ul>

    3.2 解析环节

    // 解析股票新闻
    - (void)parseStockNews {
        
        // 根据链接获取对应的 NSData 数据
        NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"https://finance.sina.com.cn/stock/"]];
        
        // 根据data创建TFHpple实例
        TFHpple *doc = [[TFHpple alloc] initWithHTMLData:data];
        
        // 根据标签进行过滤
        NSArray *elements = [doc searchWithXPathQuery:@"//ul[@class='list04']"];
        
        // 循环查找子节点
        for (int i = 0; i < elements.count; i++) {
            
            // 获取单个ul节点
            TFHppleElement *ulE = [elements objectAtIndex:i];
            
            // 查找该ul节点下边名称为li的子节点
            NSArray *liArr = [ulE childrenWithTagName:@"li"];
            
            // 遍历获取到的所有li子节点
            for (TFHppleElement *liE in liArr) {
                
                // 每个li节点下边的第一个子节点为时间信息
                TFHppleElement *timeE = liE.firstChild;
                
                // 获取到时间
                NSString *timeStr = [timeE text];
                
                // 查找li节点下边的p节点,因为就一个p节点,所有我们取第一个p节点
                TFHppleElement *pE = [[liE childrenWithTagName:@"p"] firstObject];
                
                // p节点有一个a子节点,所以我们取到a节点
                TFHppleElement *aE = [[pE childrenWithTagName:@"a"] lastObject];
                
                // a节点的内容为 标题
                NSString *titleStr = [aE text];
                
                // 根据a节点的href属性,获取到具体的新闻链接地址
                NSString *urlStr = [aE objectForKey:@"href"];
                
                if (!timeStr || !urlStr || !titleStr) {
                    continue;
                }
                NSLog(@"Stock News:\n时间:%@\n标题:%@\n链接:%@\n",timeStr,titleStr,urlStr);
            }
        }
    }

    4. 总结

    我个人感觉 hpple 真的挺好用的,不过在使用过程中,还是要注意一些问题。比如,

    4.1 有的html 节点内容或者属性值为空,这就会导致解析到的内容为空,针对这种情况,在解析的过程中,我们要对解析的结果进行相应的空判断,做到从数据源去除脏数据。

    4.2 有的html 格式不是很规范,这样在解析具体节点内容时,会导致读取失败的情况,进而引发crash问题。当然,如果是html 是从后台返回的数据,那么最好是让后台将格式规范化;如果是扒的网页数据,那只能是自己多测测,在发现问题的地方,加以判断,具体问题具体分析。

    4.3  因为以上新闻内容是随着时间变化的,所以要学会举一反三。

    5. 我在demo 里边,一共解析了三种链接(以上链接包括在内),如有兴趣可以查看。
    Demo 地址 https://github.com/coolpeng/HppleParseHtml

     

    展开全文
  • C#解析HTML

    千次阅读 2019-06-26 19:06:43
    此文介绍两种C#解析Html的方法。 第一种方法: 用System.Net.WebClient下载Web Page存到本地文件或者String中,用正则表达式来分析。这个方法可以用在Web Crawler等需要分析很多Web Page的应用中。 估计这也是...
    在搜索引擎的开发中,我们需要对网页的Html内容进行检索,难免的就需要对Html进行解析。拆分每一个节点并且获取节点间的内容。此文介绍两种C#解析Html的方法。
    第一种方法:
    用System.Net.WebClient下载Web Page存到本地文件或者String中,用正则表达式来分析。这个方法可以用在Web Crawler等需要分析很多Web Page的应用中。
    估计这也是大家最直接,最容易想到的一个方法。
    转自网上的一个实例:所有的href都抽取出来:


    using System;
    using System.Net;
    using System.Text;
    using System.Text.RegularExpressions;
    namespace HttpGet
    {
        class Class1
        {
            [STAThread]
            static void Main(string[] args)
            {
                System.Net.WebClient client = new WebClient();
                byte[] page = client.DownloadData("http://www.google.com");
                string content = System.Text.Encoding.UTF8.GetString(page);
                string regex = "href=[\\\"\\\'](http:\\/\\/|\\.\\/|\\/)?\\w+(\\.\\w+)*(\\/\\w+(\\.\\w+)?)*(\\/|\\?\\w*=\\w*(&\\w*=\\w*)*)?[\\\"\\\']";
                Regex re = new Regex(regex);
                MatchCollection matches = re.Matches(content);

                System.Collections.IEnumerator enu = matches.GetEnumerator();
                while (enu.MoveNext() && enu.Current != null)
                {
                    Match match = (Match)(enu.Current);
                    Console.Write(match.Value + "\r\n");
                }
            }
        }
    }

    一些爬虫的HTML解析中也是用的类似的方法。
    第二种方法:

    利用Winista.Htmlparser.Net 解析Html。这是.NET平台下解析Html的开源代码,网上有源码下载,百度一下就能搜到,这里就不提供了。并且有英文的帮助文档。找不到的留下邮箱。
    个人认为这是.net平台下解析html不错的解决方案,基本上能够满足我们对html的解析工作。
    自己做了个实例:


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Winista.Text.HtmlParser;
    using Winista.Text.HtmlParser.Lex;
    using Winista.Text.HtmlParser.Util;
    using Winista.Text.HtmlParser.Tags;
    using Winista.Text.HtmlParser.Filters;


    namespace HTMLParser
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                AddUrl();
            }

            private void btnParser_Click(object sender, EventArgs e)
            {
                #region 获得网页的html
                try
                {

                    txtHtmlWhole.Text = "";
                    string url = CBUrl.SelectedItem.ToString().Trim();
                    System.Net.WebClient aWebClient = new System.Net.WebClient();
                    aWebClient.Encoding = System.Text.Encoding.Default;
                    string html = aWebClient.DownloadString(url);
                    txtHtmlWhole.Text = html;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                #endregion

                #region 分析网页html节点
                Lexer lexer = new Lexer(this.txtHtmlWhole.Text);
                Parser parser = new Parser(lexer);
                NodeList htmlNodes = parser.Parse(null);
                this.treeView1.Nodes.Clear();
                this.treeView1.Nodes.Add("root");
                TreeNode treeRoot = this.treeView1.Nodes[0];
                for (int i = 0; i 
    < htmlNodes.Count; i++)
                {
                    this.RecursionHtmlNode(treeRoot, htmlNodes[i], false);
                }

                #endregion

            }

            private void RecursionHtmlNode(TreeNode treeNode, INode htmlNode, bool siblingRequired)
            {
                if (htmlNode 
    == null || treeNode == null) return;

                TreeNode current 
    = treeNode;
                
    TreeNode content ;
                //current node
                if (htmlNode is ITag)
                {
                    ITag tag 
    = (htmlNode as ITag);
                    if (!tag.IsEndTag())
                    {
                        string nodeString 
    = tag.TagName;
                        
    if (tag.Attributes != null && tag.Attributes.Count > 0)
                        {
                            if (tag.Attributes["ID"] != null)
                            {
                                nodeString = nodeString + " { id=\"" + tag.Attributes["ID"].ToString() + "\" }";
                            }
                            if (tag.Attributes["HREF"] != null)
                            {
                                nodeString = nodeString + " { href=\"" + tag.Attributes["HREF"].ToString() + "\" }";
                            }
                        }
                        
                        current = new TreeNode(nodeString);
                        treeNode.Nodes.Add(current);
                    }
                }

                //获取节点间的内容
                if (htmlNode.Children != null && htmlNode.Children.Count > 0)
                {
                    this.RecursionHtmlNode(current, htmlNode.FirstChild, true);
                    content = new TreeNode(htmlNode.FirstChild.GetText());
                    treeNode.Nodes.Add(content);
                }

                //the sibling nodes
                if (siblingRequired)
                {
                    INode sibling = htmlNode.NextSibling;
                    while (sibling != null)
                    {
                        this.RecursionHtmlNode(treeNode, sibling, false);
                        sibling = sibling.NextSibling;
                    }
                }
            }
            private void AddUrl()
            {
                CBUrl.Items.Add("http://www.hao123.com");
                CBUrl.Items.Add("http://www.sina.com");
                CBUrl.Items.Add("http://www.heuet.edu.cn");
            }

            

        }
    }

    运行效果:
    实现取来很容易,结合Winista.Htmlparser源码很快就可以实现想要的效果。

    小结:
    简单介绍了两种解析Html的方法,大家有什么其他好的方法还望指教。



    转载于:https://www.cnblogs.com/kevinGao/archive/2012/01/03/2671022.html

    展开全文
  • python 解析HTML

    千次阅读 2015-06-25 21:36:07
    1. 理解网页上的数据 网页上的数据主要有: ...有多个解析HTML的第三方库,例如:LXML,BeautifulSoup,HTMLParser等等。 解析HTML所面临的问题: 没有统一的标准。 很多网页并没有遵循HTML文档 2.1 BeautifulSoup

    1. 理解网页上的数据

    • 网页上的数据主要有:
      • HTML
      • XHTML
      • XML
      • JSON
    • 需要一个接受数据并解析的机制
    • 需要一个产生数据并发送的机制

    2. 解析HTML

    • 层次化的数据
    • 有多个解析HTML的第三方库,例如:LXML,BeautifulSoup,HTMLParser等等。
    • 解析HTML所面临的问题:
      • 没有统一的标准。
      • 很多网页并没有遵循HTML文档

    2.1 BeautifulSoup

      BeautifulSoup第三方库有以下特点:
      
    - 容易使用。
    - 版本4允许使用lxml和html5lib,可以更好的处理不规范的HTML。
    - 在处理编码方面也比较有效。

      下面是解析方法及优缺点的一个对比:
      
      com


    3 代码示例

      从终端进入python环境,按照以下方式进行试验。如果没有bs4库的话,可以使用以下命令(Ubuntu下)进行安装:
      sudo pip install beautifulsoup4
      
      

    >>>
    >>> from bs4 import BeautifulSoup
    >>>
    >>> import urllib
    >>> html = urllib.urlopen(“http://192.168.1.33/temwet/index.html“)
    >>>
    >>> html
    addinfourl at 164618764 whose fp = socket._fileobject object at 0x9cd19ac
    >>> html.code
    200
    >>>

      下面看一下网页的源代码:
      
      src
      
      使用BeautifulSoup进行解析:
      使用bt = BeautifulSoup(html.read(),"lxml")语句对接收到的html进行解析,bt.title, bt.meta, bt.title.string, bt.find_all('meta')进行元素的查找。对查找到的多个结果,可以以数组的形式存储和访问。
      
      par
      
      如果想提取网页中含有的超链接呢?我们只需要查找到”a”标签,并将其提取出来即可。links = bt.find_all('a') 可将网页中所有的超链接保存在links中,如果len(links)等于0的话就是网页中没有超链接,否则直接以数组的方式访问即可。

    展开全文
  • HTML之浏览器如何解析HTML

    千次阅读 2019-05-24 16:56:13
    浏览器如何解析html html文件在没有写入html标签之前和txt文本是一个性质的,不含任何样式。只是单纯的文本预览文件。一旦加入了html标签,表示内容有了语义!浏览器的渲染引擎才会根据标签的语义开始解析。 我们...
  • Flutter解析HTML链接

    千次阅读 2020-04-22 18:27:20
    Flutter解析HTML链接前言代码核心 前言 使用Flutter解析HTML获取标题、图片。之前Android使用的Jsoup。现在要搞Flutter,dart应该会有类似Jsoup的库。 代码 (本文以头条新闻url为例,公众号、简书、知乎大同小异) ...
  • iOS解析HTML

    千次阅读 2015-01-25 00:19:59
    xml,json都有大量的库来解析,我们如何解析html呢? TFHpple是一个小型的封装,可以用来解析html,它是对libxml的封装,语法是xpath。 今天我看到一个直接用libxml来解析html,参看:...
  • swift解析html

    千次阅读 2015-01-18 23:58:45
    介绍使用swift解析html的方法。
  • jsoup 解析HTML信息

    千次阅读 2016-02-16 22:08:13
    jsoup简介 ...它提供了一套非常省力的API, 可通过DOM,CSS以及类似于jQuery的...1、从一个URL,文件或字符串中解析HTML 2、使用DOM或CSS选择器来查找、取出数据 3、可操作HTML元素、属性、文本 jsoup的主要类层次结构
  • jsoup解析html

    千次阅读 2014-11-15 00:36:04
    它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法...从一个URL,文件或字符串中解析HTML;  使用DOM或CSS选择器来查找、取出数据;  可操作HTML元素、属性、文本;  jsoup解析 Jsoup提供
  • Vue中解析html标签

    万次阅读 2019-01-19 11:49:23
    vue中不解析html标签,会把html标签给正常输出,vue中提供了v-html来解决这一问题 正常情况下输出: &lt;!DOCTYPE html&gt; &lt;html lang="zh"&gt; &lt;head&gt; &lt;meta...
  • mpvue支持v-html解析html

    千次阅读 2019-09-19 14:57:14
    mpvue最新版本已经支持了用v-html来解析html,官方文档有问题
  • Java解析html文本

    千次阅读 2018-08-28 21:07:53
    公司是前后端分离的架构,有个功能前端使用了富文本编辑器,通过该富文本编辑器得到的html文本与实际要求有一定差距,但是前端又处理不了,因此该... 后来发现Jsoup可以解析html文本,解决了问题。 class Test { ...
  • 利用jsoup解析html

    千次阅读 2016-12-28 19:29:59
    1、jsoup简介 ...它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的...(1)从一个 URL,文件或字符串中解析HTML; (2)使用DOM或CSS选择器来查找、取出数据; (3)可操作HTML元素、属性、文本;2、maven
  • python 解析html文档 html.parse

    千次阅读 2018-08-15 20:33:57
    解析html文档,采用html.parser  库 ``` #1 导入库, from html.parser import HTMLParser from html.entities import name2codepoint #2 创建具体处理文档的类,继承HTML #里面的方法必须重写,方法名不可以随便...
  • ios 解析html内容

    千次阅读 2017-08-09 16:48:09
    在 iOS 中通常加载 ...通过 WebView 加载 HTML 字符串第一个解析html 去除标签取数据//str为我们取出的html数据 NSString * str = [reponse[@"data"] objectForKey:@"gn_content"]; //将str转换成标准的html数据 str
  • golang解析html标签

    千次阅读 2018-07-31 20:50:53
    使用golang解析html的标签,获取标签里面的内容,并修改标签的内容。 import (  "net/http"  "github.com/NiuStar/log/fmt"  "github.com/PuerkitoBio/goquery" ) //goquery包在...
  • 使用BeautifulSoup解析HTML

    千次阅读 2018-07-08 15:53:48
    from bs4 import BeautifulSoup import requests req = requests.get('...ret = req.content.decode('utf-8') # print(ret) # 使用BeautifulSoup解析HTML # soup = BeautifulSoup(ret, 'lxml') so...
  • python 使用xpath解析html

    千次阅读 2017-03-21 17:16:00
    python 使用xpath解析html
  • Jsoup解析HTML时特殊标签的解析

    千次阅读 2016-02-19 10:40:37
    HTML文件内容: 此处省略N行代码。。。 然后,  doc = Jsoup.parse(in, "UTF-8");...1.Jsoup解析HTML,对自定义的标签无法正常解析,,采用select方法,只能得到前半部分,即.  采用getElementsB
  • 前端字符串解析HTML

    千次阅读 2019-01-23 20:18:41
    parse5 - HTML解析器和序列化器 注意:默认情况下,所有函数都使用默认树适配器生成的树格式。 可以通过提供自定义树适配器实现来更改树格式。 方法: parse - 解析 HTML 字符串,返回一个 Document const ...
  • 使用lxml解析HTML数据

    千次阅读 2017-07-05 10:46:50
    诸如爬虫类场景下我们需要对抓取的HTML做内容解析,提取感兴趣的内容,python标准库提供了HTMLParser\SGMLParser两个模块用于解析HTML,然而这两个模块的实现方式都很难理解,用来做遍历查找实在是很不友好,第三方...
  • [c#] Html Agility Pack 解析HTML

    千次阅读 2018-07-05 08:38:08
    摘要在开发过程中,很有可能会遇到这样的情况,服务端返回的是html的内容,但需要在客户端显示纯...Html Agility Pack开源组件,可以通过xPath的方式快速的解析html内容。一个例子组件网址:http://htmlagilitypac...
  • angularjs解析html字符串

    千次阅读 2018-12-18 15:55:42
    下载angular-sanitize.min.js ... 添加解析函数 //解析html字符串 $scope.htmlConvertText= function(content) {  return $sce.trustAsHtml(content); };    使用ng-bin...
  • 使用lxml解析HTML代码

    千次阅读 2018-06-12 14:46:27
    1. 解析html字符串。使用“lxml.etree.HTML( )”进行解析。示例代码如下:# --coding:utf-8-- # from lxml import etree text = """ """ htmlelement = etree.HTML(text) print ...
  • React Native中解析HTML

    千次阅读 2019-01-29 23:26:06
    使用这个react-native-htmlview可以解析HTML字符串。实现效果和vue中的v-html指令或jQuery中$(Selector).html()相同 示例: import React from 'react' import {Text,View} from 'react-native' import HTMLView ...
  • php解析html类库simple_html_dom

    千次阅读 2019-04-24 18:45:52
    php解析html类库simple_html_dom 工具类下载地址:https://github.com/samacs/simple_html_dom 转载地址:https://blog.csdn.net/j_h_s/article/details/78457675 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,514
精华内容 29,005
关键字:

解析html