快捷导航
采集网页:http://hndb41.com/publish/index. ... h.name=&pageIndex=1由于需要下载附件,用@onclick构造网址
@onclick有两种值
prompt('作废')
todownload('/standard/pdf/DB41_T 148-2000.pdf')

于是我根据onclick利用xpath构造网址
concat('http://hndb41.com/standard/tosetWatermark.action?publish.filepath=',substring-before(substring-after(.//*[@class='preview']/@onclick,"'"),' '),'%20',substring-before(substring-after(.//*[@class='preview']/@onclick,' '),"'"))
构造成两种网址
todownload 有效: 网址http://hndb41.com/standard/toset ... 41_T%20148-2000.pdf
prompt值的无效网址 :http://hndb41.com/standard/toset ... ublish.filepath=%20

两重网址最后下载出来的结果却都是生成tosetWatermark.action类型文件,没有下载到我需要的pdf附件

1.如何把无效的网址设置为空的同时把需要的网址正确构造出来?
2.为什么网址正确构造出来了却不能把附件以pdf形式正确下载出来?


举报 使用道具
| 回复

共 5 个关于本帖的回复 最后回复于 2019-5-23 15:11

ym 版主 发表于 2019-5-23 11:43:33 | 显示全部楼层
1、用concat函数,无论节点是否存在都会执行拼接,这个过滤不了节点不存在的情况
2、集搜客爬虫是用的火狐内核,火狐对这种附件的文件名和格式识别不了,所以下载到的附件就没有按正确的文件名和格式存储,但是修改文件格式为PDF后,就能打开看到PDF内容了,用集搜客爬虫下载到这些文件后,需要根据downloaddir或pagefiledir里的描述文件,对已下载的文件重命名
举报 使用道具
微舆情 中级会员 发表于 2019-5-23 12:17:38 | 显示全部楼层
上面贴出的那个xpath可以简化, 不用拼接域名部分, 在做规则的界面勾选"拼接网址"
举报 使用道具
微舆情 中级会员 发表于 2019-5-23 12:18:56 | 显示全部楼层
这样prompt值无效的哪些就会生成空的网址
substring-after(substring-before(@onclick,"')"),"todownload('")
举报 使用道具
lubbio 初级会员 发表于 2019-5-23 14:44:45 | 显示全部楼层
微舆情 发表于 2019-5-23 12:17
上面贴出的那个xpath可以简化, 不用拼接域名部分, 在做规则的界面勾选"拼接网址" ...

我找不到"拼接网址"的选项,方便截个图吗?
举报 使用道具
Fuller 管理员 发表于 2019-5-23 15:11:27 | 显示全部楼层
lubbio 发表于 2019-5-23 14:44
我找不到"拼接网址"的选项,方便截个图吗?

属性20190523151043.png
双击抓取内容,在高级设置这里设置
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • 采集知乎上关于华为鸿蒙的问题和回答
  • 分词和分类检索平台使用手册
  • 用爬虫采集机场出租车进场出场数据的公告
  • 摘取泉港区政府工作报告中的数字遇到的问题
  • 调度设置参数说明

热门用户

GMT+8, 2019-9-22 00:07