怎么写抓取的 html 特征节点

sjack 发布于 2013/08/13 19:01
阅读 855
收藏 0

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

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

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

加载中
0
黄亿华
黄亿华

引用来自“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,用$选择即可。

0
sjack
sjack
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!

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

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

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

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

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

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

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

"//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">
			  
			    中央工艺美院附中(北京市国际美术学校).........



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

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

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


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还没走通。

0
sjack
sjack

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

引用来自“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,用$选择即可。

返回顶部
顶部