最近所学——爬虫心得以及学习体会(本人的第一篇博客)

  由于论文的关系,要大量的微博文本数据,在网上查了很多,没有可以直接用的现成数据,因此就入了爬虫的坑,通过同学介绍看了《精通Python网络爬虫》的书,也结合一些大牛的博客,如愿获得了自己想要的数据。在这主要记录一下自己学习这本书的心得、自己爬取微博数据的过程以及中途遇到的一些问题。  关于精通Python网络爬虫这本书,对于一个从来没解除过爬虫的我来说,这可以算是一个非常好入门的书籍了,只...
摘要由CSDN通过智能技术生成

  由于论文的关系,要大量的微博文本数据,在网上查了很多,没有可以直接用的现成数据,因此就入了爬虫的坑,通过同学介绍看了《精通Python网络爬虫》的书,也结合一些大牛的博客,如愿获得了自己想要的数据。在这主要记录一下自己学习这本书的心得、自己爬取微博数据的过程以及中途遇到的一些问题。

  关于精通Python网络爬虫这本书,对于一个从来没解除过爬虫的我来说,这可以算是一个非常好入门的书籍了,只要稍微有点Python的基础知识就可以很好学习这本书了。通过学习这本书,发现其实对于爬取web数据来说,最重要的就是如何获取大量的数据以及对于想要的数据的提取了,这里就不得不说到对于网页地址的分析以及正则表达式了,以及如何模拟登陆还有关于爬虫的Scrapy框架的知识。这本书的一些基础内容就不说了(包括爬虫的原理以及Python应用于爬虫的比如Urllib这样的库等等),直接进入我想要说的一些爬虫的重点,这些不算是难点,爬虫整体来说还是比较简单的。

  首先,说一下我对正则表达式的理解,通过python中的一些函数,可以将网页的源代码获取下来,但是如何从这些源代码中得到自己想要的数据呢(比如图片或者是一些文章标题以及微博内容),这就用到了正则表达式了,可能对于很多人来说正则表达式并不是个问题,因为正则表达式只要稍微用几次就可以很好的掌握了,但是对于刚开始的我,对于正则表达式确实是有点烦的,起初就是觉得有点麻烦,也不知道怎么写出正好可以匹配的正则来提取出想要的内容,通过学习之后,发现这是一个很灵活的东西,只要可以找到唯一识别的标识或字符串,就可以很容易的找到自己想要的东西,而且正则的编写也没有一个固定的格式,只要能匹配到自己想要的东西就是可以的。关于正则表达式的基础知识,我主要想说几个用的比较多也比较好用的:(1)“.”是用来匹配除换行符以外的任意字符;(2)“*”是用来匹配0次、1次或多次前面的原子;(3)“?”是用来匹配0次或1次前面的原子;(4)第4个就要说前面三个的组合了,也就是“.*?”了,这个就是懒惰模式了,不加问好就是贪婪模式,它们两个的区别是,懒惰模式采用的是就近匹配原则,可以让匹配结果更加的精确,二贪婪模式就是尽可能多地匹配。关于正则,我就不举例子了,只要能唯一匹配到自己想要的字符串,那就是好的正则表达式,不过要注意的是,正则表达式中有时候会加入“\”转义字符;还有一个要注意的是,在正则表达式中(),两个圆括号就代表了最终匹配的结果是圆括号里的内容,而不是整个正则表达式所匹配的内容,除非两个圆括号前面都有转义字符。除了正则表达式,还有一些获取网页源代码中自己想要的标签的方法,就是xpath表达式等。目前我也只会使用正则和xpath。

  接下来,说一下网页地址的分析,对于网上大量的数据,比如微博或者京东上的商品图片等等,他们都不是一下子囤积到一个页面上的,可以通过翻页操作查看到更多的内容,对于爬虫来说呢,为了高效简便的获取数据,就要使得爬虫可以大量自动的爬取想要的内容,这其中就设计到对于网页地址的分析了, 因为对于网页上的翻页操作,其实都是可以通过网址上的参数来反映出来的,首先打开想要获取的数据的首页https://list.jd.com/list.html?cat=9987,653,655,比如京东上的手机分类,为了自动获取大量的手机图片或数据,就要对页面进行分析,这时候点击网页最下面的“下一页”,这时观察网页地址为

https://list.jd.com/list.html?cat=9987,653,655&page=2&sort=sort_rank_asc&trans=1&JL=6_0_0&ms=6#J_main,可以发现和首页的网址相比,多了很多参数page=2&sort=sort_rank_asc&trans=1&JL=6_0_0&ms=6#J_main,对于多的这些参数,主要的是其中的page=2,这个就是控制网页翻页的参数page,不过对于不同的网站,控制翻页的参数不是都是page,有的可能是id,有的可能是pagenum等等。通过这样类似的分析就可以控制让爬虫自动按照顺序去爬取想要的数据。不过有的网站的页面分析并不像没这么简单的分析就可以得到翻页的控制参数,需要运用到一些抓包分析软件或者利用浏览器自带的工具(F12)等,这里我解除到了Fiddler,这是一个抓包分析软件,它可以详细地对HTTP请求进行分析,还能模拟对应的HTTP请求。通过学习这个软件,再难的网页翻页的控制参数都可以得到,这里我主要说一下关于微博数据的翻页,首先我铺垫一下,因为我是要获取微博“发现”下的热门分类的内容,对于一个分类,我要分析它的页面构成,微博页面不同于上面所说的京东商城,它的微博内容起初会显示15条,然后往下拉,后出现“正在加载”的字眼,根据鼠标往下拖动页面会自己加载,其实这个加载的过程就好比点击了“下一页”,由于微博内容全都显示在同一网页上,因此网址不会发生改变,这些网址的变化,只能通过抓包软件或者浏览器自带的工具来查看,通过Fiddler,我发现了其中的不同,对于起初的15条内容,他的真实数据网址是

http://d.weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=102803_ctg1_1388_-_ctg1_1388&from=faxian_hot&mod=fenlei&pagebar=0&tab=home&current_page=1&pre_page=1&page=1&pl_name=Pl_Core_NewMixFeed__3&id=102803_ctg1_1388_-_ctg1_1388&script_uri=/102803_ctg1_1388_-_ctg1_1388&feed_type=1&domain_op=102803_ctg1_1388_-_ctg1_1388&__rnd=1504661045801 HTTP/1.1,

而加载一次的网址是

http://d.weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain=102803_ctg1_1388_-_ctg1_1388&from=faxian_hot&mod=fenlei&pagebar=1&tab=home&current_page=2&pre_page=1&page=1&pl_name=Pl_Core_NewMixFeed__3&id=102803_ctg1_1388_-_ctg1_1388&script_uri=/102803_ctg1_1388_-_ctg1_1388&feed_type=1&domain_op=102803_ctg1_1388_-_ctg1_1388&__rnd=1504661183573 HTTP/1.1

其中的102803_ctg1_1388_-_ctg1_1388

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值