爬取糗事百科

爬取糗事百科

#coding=utf-8
import urllib.request
import re

f=open('D:/python文件/张贵轩-任务2.txt','a',encoding='utf-8')
try:
    for page in range(1,11):
        url = 'https://www.qiushibaike.com/8hr/page/'+str(page)+'/'
        user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
        headers = {'User-Agent': user_agent}
        request = urllib.request.Request(url,headers = headers)
        response = urllib.request.urlopen(request)
        content = response.read().decode('utf-8')
        pattern = re.compile(r'<h2>(.*?)</h2>',re.S)
        pattern1 = re.compile(r'<span>(.*?)</span>',re.S)
        pattern2 = re.compile(r'<i class=.*?>(.*?)</i>',re.S)
        items = re.findall(pattern, content)
        items1 = re.findall(pattern1, content)
        items2 = re.findall(pattern2, content)
        list = []
        list1 = []
        list2 = []
        i = 0
        j = 0
        k = 0
        l = 0
        for b in items:
            list.append(items[j])
            j+=1
        for c in items1:
            list1.append(items1[j])
            k+=1
        for d in items2:
            list2.append(items2[l])
            l+=1
        print(items1)
        for a in range(25):
            list[i]=list[i].strip()
            list1[i] = list1[i].strip()
            list[i] = re.sub('<br/>','',list[i])
            list1[i] =re.sub('<br/>','',list1[i])
            f.write('发布人:')
            f.writelines(list[i]+'\n')
            f.write('发布内容:')
            f.writelines(list1[i].string+'\n')
            f.write('点赞数:')
            f.writelines(list2[i]+'\n\n')
            f.write('==================================================\n')
            i+=1

except urllib.request.URLError as e:
    if hasattr(e,"code"):
        print (e.code)
    if hasattr(e,"reason"):
        print (e.reason)

f.close()

学习总结:
(1)掌握了re库,urllib.request库内的方法,利用这些方法爬取网页内容;
(2)正则表达式的使用;
(3)利用user_agent = ‘Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)’,headers = {‘User-Agent’: user_agent}将python伪装成浏览器访问有限制的网站;
(4)利用了文件的打开,打开类型,保存等操作;
(5)利用了try,except这个错误处理方法;
(6)其他的还有删除文本指定内容操作等等。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值