l0o0 / translators_CN

Zotero translator中文网页抓取翻译器🎉This is Zotero translators for Chinese Sites(beta), not the official Zotero repo
GNU Affero General Public License v3.0
4.04k stars 523 forks source link

fix (Wanfang Data.js) add (Wanfang Med.js)拆分万方数据和万方医疗;未实现万方数据的全文下载 #263

Closed jiaojiaodubai closed 5 months ago

jiaojiaodubai commented 8 months ago
  1. 万方的附件下载似乎有跳转,即页面上的下载按钮上的链接并非最终下载地址,我没有下载权限无法测试,需要额外的帮助。
  2. 我不确定万方医疗那里的“法规”条目类型的字段是否填充正确,望审查。
jiaojiaodubai commented 8 months ago

之前万方翻译器获取PDF下载链接的代码比较奇特(encodeURIComponent(doc.title)这一句感觉好随便啊),我不确定它现在是否还有效。麻烦有条件的朋友帮忙试一下,如果现在能用原来的万方翻译器抓取到PDF的话,我就把原来的代码移植过去。

function getPDF(newItem, doc) {
    var ele = doc.querySelector("a.download") || doc.querySelector("span.title-id-hidden");
    if (ele === null) return false;
    var hiddenId = ele.getAttribute('href') || ele.innerText;
    var tmp = hiddenId.match(/(\w+)_([^.]+)/);
    if (tmp === null) return false;
    // Z.debug(tmp)
    return "https://oss.wanfangdata.com.cn/www/" + encodeURIComponent(doc.title) + ".ashx?isread=true&type=" + tmp[1] + "&resourceId=" + encodeURI(decodeURIComponent(tmp[2]));
}
l0o0 commented 8 months ago

万方医疗和万方数据虽然属于万方,不过对我来说,感觉类似知网和知网空间的感觉。怎么觉得想起来要拆分这个了?

之前万方翻译器获取PDF下载链接的代码比较奇特(encodeURIComponent(doc.title)这一句感觉好随便啊)

如果我没记错,这个下载PDF的代码是某个同学提的pr,当时我看有效果就并进去了。

jiaojiaodubai commented 8 months ago

万方医疗和万方数据虽然属于万方,不过对我来说,感觉类似知网和知网空间的感觉。怎么觉得想起来要拆分这个了?

共同点

  1. 从文献数量上看,知网空间是知网的子集(知网空间不含知网首发),万方医学是万方数据的子集(仅包括医学相关)。
  2. 知网空间兼容知网的导出接口,万方医学也兼容万方数据的导出接口。

不同点

  1. 知网空间的定位是一个文献发布展示平台,而不是正式的学术检索系统,它的详情页缺少必要的字段,必须依赖知网导出接口才能使用。
  2. 万方医疗更像是知网那种行业专版,它自身是完备的,有自己的导出接口、有自己的页面,不依赖万方数据的接口。

为什么拆分

我在修改万方的翻译器的时候,发现几乎每一个步骤都要判断当前页面是万方数据还是万方医学,这是因为万方医疗和万方数据的共同点仅仅在于接口兼容而已,它们的页面布局可以说毫不相干。仅仅为了最后一步scrape()能共用,就迫使前面不得不瞻前顾后,代码写起来非常麻烦。

这里还有一个细节问题,就是万方医学的搜索页上显著地包含详情页的链接,我们可以用传统方法从链接打开详情页逐个抓取,而万方数据的搜索页面已经不含详情页的链接了(或许我们可以用id拼接,但我没有尝试)。

总之我认为拆分可以让万方医学以更轻量的方式来抓取,也能减少万方数据翻译器里过多的兼容包袱。

jiaojiaodubai commented 8 months ago

有几个朋友帮我测试了一下,使用原万方翻译器的情况下,只有校园网直连可以下PDF,ip认证和VPN用户都下不了。原先的方法可能钻了API的空子(一种有用但不规范的请求)。 PDF下载链接形如

https://oss.wanfangdata.com.cn/NewFulltext?type=conference&resourceId=12345678&transaction={...}

transaction参数非常复杂,很多属性的意义都搞不清楚。

jiaojiaodubai commented 8 months ago

经测试,原有方法仅能下载部分开放下载的PDF。我在网上买的帐号因为请求异常被封了……最终决定禁用不可靠的PDF下载,以免频繁发出不合理请求。

wohenbushuang commented 8 months ago

之前万方翻译器获取PDF下载链接的代码比较奇特(encodeURIComponent(doc.title)这一句感觉好随便啊)

好像是用来改文件名的

你现在看到的oss链接,我记得是原先版本通过在线阅读功能可以直接获得pdf的直链。既然目前暂时还没被ban,在能够实现完全模拟订单机制获取新版本下的pdf直链之前,请不要改动这部分

wohenbushuang commented 8 months ago

我在网上买的帐号因为请求异常被封了……最终决定禁用不可靠的PDF下载,以免频繁发出不合理请求。

如果你所在的单位没有购买wanfang的数据库,还是别尝试修改和调试下载的代码吧,保持原样

doubanchan commented 7 months ago

问题 1、万方医学网的专利有些未识别到,testcast。 2、期刊文章未正确识别,testcase

doubanchan commented 7 months ago

万方数据 假如url是可能加密过的长链接的话,最终url仍然是长链接,这个倾向取比较易于人读的短链接。 比如,期刊论文:长连接短链接;学位论文:长连接短链接;会议:长连接短链接;专利:长连接短链接

jiaojiaodubai commented 7 months ago

万方数据 假如url是可能加密过的长链接的话,最终url仍然是长链接,这个倾向取比较易于人读的短链接。

好像早已支持这个了?

doubanchan commented 7 months ago

万方数据 假如url是可能加密过的长链接的话,最终url仍然是长链接,这个倾向取比较易于人读的短链接。

好像早已支持这个了?

重新更新这个新版本已修复。