开发者社区> 问答> 正文

怎么写抓取的 html 特征节点:报错

@黄亿华 你好,想跟你请教个问题:

page.putField("intro",page.getHtml().xpath("//div[@class='left_648 top_border']/div[...

要得到图中的文字, 上面这个表达式 是要怎么写 ?

展开
收起
kun坤 2020-06-09 22:30:37 615 0
1 条回答
写回答
取消 提交回答
  • 引用来自“searchjack”的答案

    引用来自“黄亿华”的答案

    空格是不需要转义的,去掉\\再试试?


    page.putField("intro", page.getHtml().xpath("//div[@class='left_648']/div[@class='pad_20']/").all());
    		page.putField("intro22", page.getHtml().xpath("//div[@class='pad_20']/").all());
    //		Document doc = Jsoup.parse(page.getHtml().toString());
    //		Elements e = doc.getElementsByClass("pad_20");
    //		System.out.println("============>"+ e.html());


    用 jsoup 可以, 但是, webmagic还没走通。

    可否给个URL?

    另:webmagic也封装了jsoup,用$选择即可。

    ######
    page.putField("intro",page.getHtml().xpath("//div[@class='left_648\\ top_border']/div[@class='pad_20\\ line_22']/").all());

    这样, 报异常 :

    org.htmlcleaner.XPatherException: Error in evaluating XPath expression!

    ######空格是不需要转义的,去掉\\再试试?######貌似不支持带空格的 class ?######你先找一个专门写正则的软件。把你要匹配的数据拷贝过去。选取你需要的正则风格。然后去尝试就行。正则表达式不同的语言标准是不一样的。######

    引用来自“黄亿华”的答案

    空格是不需要转义的,去掉\\再试试?
    还是不行啊 ~
    ######

    引用来自“轻舞凋零”的答案

    你先找一个专门写正则的软件。把你要匹配的数据拷贝过去。选取你需要的正则风格。然后去尝试就行。正则表达式不同的语言标准是不一样的。
    收到。
    ######

    引用来自“黄亿华”的答案

    空格是不需要转义的,去掉\\再试试?

    "//div[@class='left_648 top_border']/div[@class='pad_20 line_22']/"

    这样也不行、 哪不对 ?


    <div class="left_648 top_border" style="min-height:360px;height:auto">
    			<h2><span><a class="orange_12" href="index.html">返回首页</a></span>学校简介</h2>
    			<div class="pad_20 line_22">
    			  
    			    中央工艺美院附中(北京市国际美术学校).........



    ###### @黄亿华 0 ~######已经加到 webmagic的issue里了:https://github.com/code4craft/webmagic/issues/7######暂时不打算这么做,因为对xpath不是特别熟,这么做纠错可能有新问题。我想到的做法是异常把错误的字符标记出来,看看能不能做。######回复 @黄亿华 : en . 是这个问题, 能不能考虑处理下最后的 /######结尾多了一个"/",HtmlCleaner的XPath解析貌似不是很健壮... "//div[@class='left_648 top_border']/div[@class='pad_20 line_22']"这样子就对了######有个笨方法就是获取html 计算节点字符数在截取...######en . 可不能总这样干啊 !######

    引用来自“黄亿华”的答案

    空格是不需要转义的,去掉\\再试试?


    page.putField("intro", page.getHtml().xpath("//div[@class='left_648']/div[@class='pad_20']/").all());
    		page.putField("intro22", page.getHtml().xpath("//div[@class='pad_20']/").all());
    //		Document doc = Jsoup.parse(page.getHtml().toString());
    //		Elements e = doc.getElementsByClass("pad_20");
    //		System.out.println("============>"+ e.html());


    用 jsoup 可以, 但是, webmagic还没走通。

    ######

    引用来自“黄亿华”的答案

    引用来自“searchjack”的答案

    引用来自“黄亿华”的答案

    空格是不需要转义的,去掉\\再试试?


    page.putField("intro", page.getHtml().xpath("//div[@class='left_648']/div[@class='pad_20']/").all());
    		page.putField("intro22", page.getHtml().xpath("//div[@class='pad_20']/").all());
    //		Document doc = Jsoup.parse(page.getHtml().toString());
    //		Elements e = doc.getElementsByClass("pad_20");
    //		System.out.println("============>"+ e.html());


    用 jsoup 可以, 但是, webmagic还没走通。

    可否给个URL?

    另:webmagic也封装了jsoup,用$选择即可。

    2020-06-10 09:35:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《零基础HTML入门教程》 立即下载
天猫 HTML5 互动技术实践 立即下载
天猫HTML5互动技术实践 立即下载