舆情项目xpathtest问题

当前xpathtest存在的问题。

1.一个网站有正文有两种页面格式而且url正则不能区分时,只能舍弃一种格式的网页。

2.当正文网页需要翻页时,只能拿到第一页的东西。http://www.cankaoxiaoxi.com/china/20180810/2308630.shtml

3.除了能直接get得到的网页;其他的都无能为力。

4.有些网站下一页不是普通的get请求,但是url有规律,这种情况也不能好好的支持。http://www.chinanews.com/scroll-news/news1.html

5.个别网站时间显示是 ‘今天’ ‘昨天’。。http://news.tjbh.com/gnnews/system/2018/08/10/030419987.shtml

6.个别网站信息在图片里,http://industry.cfi.cn/p20180809000540.html

7.xpath语法的问题:

       httpcleaner 用的是xpath1.0版本; 网上也找不到其具体语法, 跟据经验列出以下几条:

  1.  /text() 与 //text() 的效果一样。
  2. 正文里一般有p标签,我们有时用//p//text() 拿不到, 但是艳容能拿到(她用的代码跟我们不一样)。
  3. div[条件1][条件2] 这样多谓语的不支持
  4. div[last()-1]这样带有运算的不支持
  5. 不支持 |  (或),如果支持的话,那么新新闻与旧新闻页面结构不一样的这种一个网站有多种不同的页面的情况就好办了

我这里提一个新的调用xml的方式:

现在是每一个xml都有与之对应的一个正则表达式。然后每进来一个url就去找第一个与之匹配的正则的那项的xml。

我想的方式是将每个种子url对应的xml预先就固定死。 举个例子:

<!--中国日报中文网
		国际资讯:http://world.chinadaily.com.cn/node_1072287.htm
		中文聚焦:http://cnews.chinadaily.com.cn/node_1132603.htm
		中国要闻:http://china.chinadaily.com.cn/node_1143902.htm
		财经头条:http://caijing.chinadaily.com.cn/node_1078506.htm
		财经要闻:http://caijing.chinadaily.com.cn/node_53008184.htm
		国际资讯:http://world.chinadaily.com.cn/node_1072287.htm
		世界要闻:http://world.chinadaily.com.cn/node_1072269.htm
		最热新闻:http://top.chinadaily.com.cn/node_53005370.htm
		生活快讯:http://fashion.chinadaily.com.cn/node_53008176.htm
		作者和来源是一起的
	-->
    <page name="chinadaily" parallelismHint="10" url="^http://.+?\.chinadaily\.com\.cn/node.+?htm$">
        <item name="fetching_urls" type="MultipleResult" desc="中国日报网">//div[@class='busBox1']//h3//@href</item>
        <item name="fetching_next_page" type="SingleResult" desc="下一页">//a[text()='下一页']/@href</item>
        <item name="fetching_title" type="MultipleResult" desc="中国日报网新闻标题">//div[@class='busBox1']//h3//text()</item>
    </page>
    <page name="chinadaily" parallelismHint="10" url="^http://.+?\.chinadaily\.com\.cn/.+?content.+htm$">
        <item name="title" type="SingleResult" desc="标题">//h1[@class='dabiaoti']/text()</item>
        <item name="content" type="MultipleResult" desc="正文">//div[@id='Content']//text()</item>
        <item name="timestamp" type="SingleResult" desc="提交时间">//div[@id='pubtime']//text()</item>
        <item name="source" type="SingleResult" desc="中国日报网新闻来源">//div[@id='source']//text()</item>
        <item name="nickname" type="SingleResult" desc="中国日报网新闻作者">//div[@id='source']//text()</item>
    </page>

上面是我写的一个xml,我的意思是将种子url也同xpath一样预先写入配置文件;解析xml的时候直接将种子url拿出来让第一个xml解析,解析出来的正文url用第二项解析。这中间不需要正则的参与!如果一个网站对应超过2个xml项,那也只需加正则按照现在的xml来就好了。(我们写的大部分网站都只需要写两个xml,而且如果xpath支持或, 那么95%以上的网站都可以只写两个xml)

现在这种方式的话,我们遇到过一些问题,比如资产部今天调研了一个北京人民网,我今天写了北京人民的xml;但是过一段时间又调研了个湖南人民网,这样我又得回来看北京人民网是否与湖南的存在冲突!这有点难受。

如果以我说的这样就不会出现这种情况,我不需要去管过去写过什么。每两项或者多项xml与其种子url相对于其他的xml是独立的。

  现在这样写也有优点的,我估计代码稍微好写一些,好控制线程一些吧!但是,如果能改成我这样的方式的话,我们写xpath的会舒服一些。 要不要改,还是要看相关人员思考一下看有没有必要,改代码复不复杂,这样改对以后还有没有帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值