快使用Ctrl+D收藏本站!如果本站的文章以及资源有帮助到您,希望您能赞助本站服务器费用,感谢您的支持!本站开放注册,现邀请您一起分享技术心得!您可以-注册-

Python3.6爬虫入门教程练手小项目之二:爬取糗事百科网站的段子.作者.评论数.赞数

Python爬虫 Julius_wen 885℃ 0评论

1.步骤解析

  • 首先要能链接网页url,得到糗百网页的HTML全部代码(我们在上一篇博文已经做到了)
  • 对糗事百科网页进行正则表达式分析
  • 编写python3.6爬虫代码

我们在上一篇博文中,已经成功抓取到了糗百网页的全部HTML代码,上篇博文我们使用了简单的正则表达式进行糗百图片识别。我们这一篇博文,将使用更加复杂的正则表达式来抓取我们需要的内容。下面正式开始:

2.糗事百科网页正则表达式分析

我这里找到一个工具,来进行正则表达式的测试。说实话,我被正则表达式搞的也头大,之前也没接触过,也是刚刚学的。下面是我用的正则表达式在线测试工具网页:http://tool.chinaz.com/regex/?qq-pf-to=pcqq.c2c大家在自己编正则表达式的时候,可以用这个网页进行测试(注意:这个工具很智障,或者说因为“.”的正则表达式默认情况下,不能表示“\n”换行,,所以要测试时,不能整段正则表达式一起测试……),下面我们开始分析糗百热门页段子的HTML代码的正则表达式:

这个就是我们要抓取的段子的HTML代码,我们要对这个进行正则表达式分析:

我们要抓取:1发布人,2段子的全部信息的部分地址, 3发布内容, 4发布图片, 5点赞数。打开上面的正则表达式在线测试工具链接:(注意:这个工具很智障,或者说因为“.”的正则表达式语法默认情况下,不能表示“\n”换行,,所以要测试时,不能整段正则表达式一起测试……只能单独测试一小部分正则内容)

比如我们测试段子内容的正则表达式:

我们打开之前写的博文:Python3.6爬虫入门自学教程之九:python中的正则表达式学习看一下正则表达式相关知识:

<span>(.*?)</span>,这个正则表达式实际上用到的语法,就是上面四个图。

首先括号括起来的部分,将作为一个分组,保存到一个list中。其次“.”这个语法,可以在DOTALL模式下,也就是传入re.compile()这个方法的参数flag = re.S,就是DOTALL模式。然后是“”语法,其匹配的是”.”0次或者无限次。然后就是“?”搭配,让这个变成非贪婪模式。

下面是贪婪模式和非贪婪模式简介:在我们上一篇博文中有详细介绍:Python3.6爬虫入门自学教程之九:python中的正则表达式学习

当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。

有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:

a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)ab(第四到第五个字符)

为什么第一个匹配是aab(第一到第三个字符)而不是ab(第二到第三个字符)?简单地说,因为正则表达式有另一条规则,比懒惰/贪婪规则的优先级更高:最先开始的匹配拥有最高的优先权——The match that begins earliest wins。

其他地方的正则表达式分析和上面差不多,下面是所有的正则表达式:

这四个括号括起来的内容,分别代表1发布人,2段子的全部信息的部分地址, 3发布内容, 4发布图片, 5点赞数

#3.简单版本的爬虫爬取糗事百科段子

Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

运行结果如下:

好了,是不是很炫酷,我们已经可以爬下来糗百的段子了。不过这个代码还比较low,下面我们对它进行升级,优化一下我们的代码。

4.升级版本的爬虫

这个代码是 github上一个网友“wz”写的,这里直接引用他的代码。封装的很棒,引入了python类,自己封装了一下。很好的代码,挺清晰的。

转载请注明:燕骏博客 » Python3.6爬虫入门教程练手小项目之二:爬取糗事百科网站的段子.作者.评论数.赞数

赞赏作者

微信赞赏支付宝赞赏

喜欢 (3)or分享 (0)

如果您喜欢本站文章,感觉本站的资源对您有帮助,请狠狠点击下面

每累计赞助40元,即可让本站按最低配置运行一个月,感谢您的支持!

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址