python爬虫-知网(CNKI)主题文献

学习爬虫开始,我就想着对CNKI主题文献进行爬虫,对感兴趣的主题文章进行抓取,获取相关文章的基本信息和摘要,方便快速了解某一个领域的研究进程,重点等等。

经过不断的修改,终于完成此目的。

在此爬虫程序编写过程,需要注意几个问题。

1. 选择合适的网站入口;

一般我们进入知网是www.cnki.net,我发现对此网站进行爬取,难以获取完整的网站源码,最后发现 http://search.cnki.net/ 能得到完整源码。

2. 分析网站URL:

将图中的URL复制出来,得到下面的URL: http://search.cnki.net/search.aspx?q=%E7%B2%BE%E5%87%86%E6%89%B6%E8%B4%AB&rank=citeNumber&cluster=all&val=&p=0  发现被编码了,需要对复制出来的URL使用 urllib.unquote() 解码。

分析解码后的URL:http://search.cnki.net/search.aspx?q=精准扶贫&rank=citeNumber&cluster=all&val=CJFDTOTAL&p=0 ; 通过选择不同的排序,不同的搜索关键词,以及不同的文献类型,可以确定 "q="字段控制搜索的关键词,"rank=" 控制排序方式,“p=” 字段控制了翻页, 并且步长为15。最终确定搜索URL为:url='http://search.cnki.net/search.aspx?q='+str(keywords)+'&rank=citeNumber&cluster=all&val=CJFDTOTAL&p='+'number'。

3. 转码问题:

在爬取网页过程中,发现得到的网页源码打印出来后,是乱码,最终发现是因为网页源码的编码方式并不是UTF-8,因此,为了得到可以用于解析的的网页源码,需要对网页源码进行转码,首先从原始编码方式转化为通用型的Unicode,然后再转码为:UTF-8, 转码方式:

f=requests.get(test,headers=headers)                   #  获得网页源码

ftext=f.text.encode(f.encoding).decode('utf-8')     #  转码成可以分析的编码

4. 代理IP问题:

在爬虫过程中,爬取少量网页和爬取大量网页存在较大区别。爬取较少网页是,被爬的服务器不会拒绝,当访问过多,就可能造成拒绝访问,被屏蔽IP的问题。这个时候就需要使用代理IP去访问。代理IP实现“瞒天过海”之计,让被访问的服务器显示的IP地址是爬虫程序设定的IP,而非计算机真实的IP地址,就算发现是爬虫程序,被屏蔽的IP是代理IP,而非真实的计算机IP地址。

对CNKI网站进行爬虫时,发现当爬取450篇信息后,IP 就会被屏蔽,需要填写验证码,导致无法连续爬取,因此需要设置代理IP。  代理IP地址可以去一些网站去爬取,本程序使用了:http://www.xicidaili.com/nt/ 提供的免费代理IP。

5. 分功能设置函数:

为了使得代码逻辑清晰,可以分不同的目的设置不同的函数。注意各个函数之间的参数传递,容易出错。

6. 网站源码自身的不规则:

在测试程序过程中,大部分文章爬取成功,但是,存在小部分文章爬取失败,按照道理,编码一样话,那应该同时成功,同时失败。选择爬取“成功”和“失

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值