python 学术_python requests爬取必应学术

python 学术_python requests爬取必应学术利用爬虫技术爬取文献 可以获取到必应学术上文献的文献名 作者 摘要 期刊等和参考文献和引证文献

利用爬虫技术爬取文献,可以获取到必应学术上文献的文献名、作者、摘要、期刊等和参考文献和引证文献。虽然直接在必应上搜索,可以直接在在网页上看文献摘要。通过查看文献名、摘要等信息来进一步确定是否要看文献内容,但这有时是一件费力的事,需要每次文献,看基本信息来进一步确认是否是自己感兴趣的。然而利用爬虫可以批量下载文献,然后通过进一步筛选,得出自己感兴趣的文章。这能省下许多时间。

实例

通过正常利用浏览器在必应学术上搜索文献,打开必应学术URLA similarity distance of diversity measure for discriminating mesophilic and thermophilic proteins,然后搜索,下面会出现许多条目点开一个看起来像是请求数据的请求。会出现它的详细信息。如下图:

详情

有请求 url ,查询参数,请求头等数据。下面给出代码来实现第一步请求。

1.首先分析分析request url,发现url是由参数构成,其参数有q、go、qs、form.其中q显而易见是查询数据。在url中是以 ‘+’将每一个单词连接的。go是什么行为,qs和form暂未知,照写就行,有如下代码:

g.png

构建请求头,主要是参数 q 变化,其它参数没变。所以构建参数q,先将文献名按空格转化为list,在利用‘+’将他们转化为字符串。

如果将r.text里的内容写入一个html文件里再打开,会发现和浏览器正常打开一样的。

s.png

2.这里需要的是必应学术的网页链接,而不是其它的网站,有时,必应学术的会在第一条,有时在下面几条中,上图是第二条。在浏览器中第二条,会进入详细页面,然后就可以通过正则表达式或者一些解析库获如Beautiful Soup来获取数据,这里就不在给出代码了。

这是在搜索页面窗口判断哪条数据是必应学术的,通过简单的if判断(关键词可能出错),必应url应该是这样的

/academic/profile?id=djflajd&encoded=0&v=paper_preview&mkt=zh-cn

其中id=djflajd&encoded=0&v=paper_preview&mkt=zh-cn,在ajax请求中是固定参数,故单独提出来。

for i in range(1,5):

result = html.xpath('//*[@id="b_results"]/li[%s]/h2/a/@href' % i)

if '/academic/' in result[0]:

_, p_id = result[0].split('?') # 获取不变的参数

break

3.接下来分析它的参考文献或引证文献,默认只显示10条,通过展示更多可以再显示10条,XHR可以筛选出ajax请求,(这里没有继续请求文章详细页面,而是直接构建ajax请求url)

a.png

这里经过几次分析,有几个主要参数在变化,控制加载数据行为,

参数

count 代表一次加载多少数据,默认是10,first是偏移量,代表从第几条数据开始加载。IID,SFX,是加载次数。一次展示更多,数字就会增加。rt,为1是代表显示参考文献,等于2是引证文献。

通过直接访问ajax请求url,可以得到以下画面

aj.png

要获取数据也就需要用解析库或者正则表达式解析数据了。代码如下:

l.png

代码有点垃圾,hhh,将就看了。。。。

结果:

r.png

其它

代码中只是简单简单实现参考文献的的爬取,不过要完整的爬取文献的文献名、作者、摘要、期刊等和参考文献和引证文献。却也不难,引证文献只需将参数rt改为2就行。其它的就利用解析库解析就行。另外,可以将参考文献,引证文献保存起来,然后在循环运行函数,让程序一直运行,把所有相关文献都爬出来了,不过这肯定就费时间了还有需要设置代理防止反爬。

python控制台动画

今天的文章 python 学术_python requests爬取必应学术分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-15 22:46
下一篇 2024-12-15 22:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/86847.html