美文网首页
python requests爬取必应学术

python requests爬取必应学术

作者: 何物昂 | 来源:发表于2018-06-10 22:42 被阅读0次

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

    实例

    通过正常利用浏览器在必应学术上搜索文献,打开必应学术URLhttps://cn.bing.com/academic/。打开开发者工具,切换 Network 选项卡。在输入框输入A 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 requests爬取必应学术

          本文链接:https://www.haomeiwen.com/subject/olhqeftx.html