python自学笔记——糗事百科段子爬取

# -*- coding: utf-8 -*-

"""

Created on Thu Dec 21 14:27:16 2017

@author: Andrew

"""

########################爬取内容包括:用户、段子内容、段子对应的好笑数

import urllib.request

import re

def getcontent(url,page):

    #模拟成浏览器

    headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36")

    opener = urllib.request.build_opener()

    opener.addheaders = [headers]

    #将opener安装为全局

    urllib.request.install_opener(opener)

    data=urllib.request.urlopen(url).read().decode("utf-8")

    #构建对应用户提取的正则表达式

    userpat='<h2>(.*?)</h2>'

    #构建段子内容提取的正则表达式

    contentpat='<div class="content">(.*?)</div>'

    #构建觉得段子好笑的数量

    haoxiaopat='<i class="number">(\d*)</i>\s*好笑'

    #寻找出所有的用户,有换行符就用re.S:修改模式

    userlist=re.compile(userpat,re.S).findall(data)

    #寻找出所有的内容

    contentlist=re.compile(contentpat,re.S).findall(data)

    #村找出所有的觉得好笑的数量

    haoxiaolist=re.compile(haoxiaopat,re.S).findall(data)

    x=1

    for content in contentlist:

        content=content.replace("\n","")

        #用字符串作为变量名,先将对应字符串赋给一个变量

        name="content"+str(x)

        #通过exec()函数实现用字符串作为变量名并赋值

        exec(name+'=content')

        x+=1

    y=1

    z=0

    for user in userlist:

    #筛选出好笑数大于200的段子

        if int(haoxiaolist[z])>200:

            print("好笑:"+str(haoxiaolist[z]))

            name="content"+str(y)

            print(" 用户 "+str(page)+str(y)+" 是:"+user)

            print("内容是:")

            exec("print("+name+")")

            print("\n")        

            y=y+1

            z=z+1

        else:

            z=z+1

#分别获取各页的段子,通过for循环可以获取多页

for i in range(1,2):

    url="http://www.qiushibaike.com/8hr/page/"+str(i)

    getcontent(url,i)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值