爬取一些励志文章

直接上代码:

import urllib.request
import urllib.parse
import re



def handle_request(url, page=None):

    if page != None:
        url = url + str(page) + '.html'
    #print(url)

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0',
    }
    request = urllib.request.Request(url=url, headers=headers)
    return request

def get_text(a_href):
    #调用函数,构建请求对象
    request = handle_request(a_href)
    #发送请求,获得响应
    content = content = urllib.request.urlopen(request).read().decode()
    pattern = re.compile(r'<div class="neirong">(.*?)</div>',re.S)
    lt = pattern.findall(content)
    text = lt[0]
    #将内容里面所有的内容标签全部清空
    pat = re.compile(r'<img.*?>')
    text = pat.sub('',text)
    # print(lt)
    return text


def parse_content(content):
    #写正则
    #<a href="/lizhi/qianming/20190141188.html"><b>人生有时很难但愿你学会坚强——告诫年轻人的经典励志语录</b></a>
    #(/lizhi/qianming/\d+\.html)的括号是为了获取/lizhi/qianming/20190841364.html这个内容地址
    pattern = re.compile(r'<h3><a href="(/lizhi/qianming/\d+\.html)"><b>(.*?)</b></a></h3>')
    #返回的lt是一个列表,列表中的元素都是元组,
    # 元组中第一个元素就是正则中第一个小括号匹配到的内容,
    # 元组中第二个元素就是正则中第二个小括号匹配到的内容
    lt = pattern.findall(content)
    # print(lt)
    # print(len(lt))
    for href_title in lt:
        a_href = 'http://www.yikexun.cn' + href_title[0]
        #获取标题
        title = href_title[-1]
        #向a_href发送请求,获取响应内容
        text = get_text(a_href)
        string = '<h1>%s/<h1>%s' % (title,text)
        with open('lizhi.html', 'a', encoding='utf8') as fp:
            fp.write(string)



def main():
    url = 'http://www.yikexun.cn/lizhi/qianming/list_50_'
    start_page = int(input('请输入起始页码:'))
    end_page = int(input('请输入结束页码:'))
    for page in range(start_page, end_page + 1):
        #根据url和page生成指定的request
        print('第%s也开始下载....'%page)
        #生成请求对象
        request = handle_request(url, page)
        # 发送请求对象,获取请求内容
        content = urllib.request.urlopen(request).read().decode()
        #解析内容,提取所有图片链接下载链接
        parse_content(content)
        print('第%s也结束下载....' % page)
        print()
        print()


if __name__ =='__main__':
    main()

完了之后会在当前目录下生成一个

lizhi.html

文件,打开如下图:

 

完成!
更多学习资源欢迎关注公众号:源起1024

或扫描下面二维码关注

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值