lb_Mvp的个人空间 https://blog.eetop.cn/1185438 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Python爬虫实战之爬取糗百段子

已有 1141 次阅读| 2015-10-5 09:06 |个人分类:Python爬虫

本次实战学习参考了 静觅的文章:http://cuiqingcai.com/990.html

总结注意点:

1 适当在代码中加入一些print语句,可以提高代码的可调试性。
2 正则表达式的匹配利用了 () 的分组和 .*? 的非贪婪,十分方便。之前看视频学习时学到一个技巧“先抓大再抓小”,到这里反而没分组方便!
3 Python中的逻辑运算符是遵循 “短路逻辑” 的,x or y,如果x为真,那么结果为x,如果x为假,那么结果为y。也就是说值是由决定表达式的值得那个变量。使用时一定要注意!
4 Python的类中的属性(变量)和方法(函数)在类中被使用时要注意添加self。 self是实例对象的唯一标志!

未解决问题(各位路过的Python友,如果有知道答案的,麻烦留言解答一下,谢谢了哈):

1 如果get_jokes 函数中的正则表达式稍微修改下,不能让其正常匹配,程序运行时则会卡在 items=pattern.findall(items) 这一句。 不知道是什么原因??
2 每次按空格输出一个段子的信息,某次就会出现 UnicodeEncodeError: ‘gbk’ codec can’t encode character u’\u200e’ in position 的错误。尝试了如下方法:
   (1)  html = r.content         #而不是 r.text。但是这样获得的html是二进制文件,re.findall时会报错!TypeError: can't use a string pattern on a bytes-like object
 (2)r.encoding = "utf-8"
           html = r.text     #查看网页的编码格式是utf-8,于是encoding为 utf-8,使得获取源代码时为 utf-8的编码格式,但是仍然会出现 UnicodeEncodeError 问题


整体代码如下:

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 3

    获赞
  • 2

    评论
  • 753

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-25 07:09 , Processed in 0.028011 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部