zoukankan      html  css  js  c++  java
  • python之爬取练习

    练习要求爬取http://yuedu.anyv.net/网址的最大页码数和文章标题和链接

    网址页面截图:

    代码截图:

    完整代码:

    根据网页显示页码的方式,爬取的所有页码中倒数第二个页码是最大页码。

    import urllib.request
    from bs4 import BeautifulSoup
    import time
    import requests
    import re
    import itertools
    import io
    import sys
    sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
    class DrawStu():
        def __init__(self):
            self.baseurl='http://yuedu.anyv.net/';
            pass;
        #实现爬取api
        def common_draw(self,url):
            response=urllib.request.urlopen(url);#注意 写在内部以后 变成了形参 
            html=response.read();#进行乱码处理
            code_of_html=html.decode('gbk');#进行解码
            doc=BeautifulSoup(html);
            return doc;
    
        #爬取总页数
        def get_page_size(self):
            _doc=self.common_draw(self.baseurl);    
            pagecxt=_doc.find('div',{'id':'content-pagenation'}).findAll('a');#获取当前a个数        
            size=len(pagecxt);
            maxsize=pagecxt[size-2].text;#获取倒数第二个进行获取里面值就是最大值
            maxsize=int(maxsize)
            return maxsize;
    
        #爬取文章标题和链接
        def get_title(self):
            r=requests.get("http://yuedu.anyv.net/")
            r.encoding=r.apparent_encoding
            result=r.text
            bs=BeautifulSoup(result,'html.parser')
            pagecxt=bs.find('div',{'class':'content'}).findAll('div',{'class':'image group'});
            for x in pagecxt:
                pageinfo=x.find('div',{'class':'grid news_desc'});
                title=pageinfo.find('h3').find('a').text;
                print("文章标题:")
                print(title)
                link=pageinfo.find('h3').find('a').get('href');
                print("文章链接:")
                print(link)
    
    D=DrawStu();
    if __name__ == '__main__':
        size=D.get_page_size();
        print("总页数:")
        print(size)
        title=D.get_title();
        print(title)
        

    运行结果截图:

  • 相关阅读:
    小程序canvas生成海报-新旧接口
    vue网页小程序实现七牛云图片文件上传以及原生组件video显示不出问题
    【文化课】 一篇魔改英语理解
    python萌新笔记
    版本控制(Version control)
    开源许可证(License)
    agc004c
    python日期时间、时间戳互相转换
    拓展django-haystack全文检索的样式和搜索频率限制
    常用JS代码
  • 原文地址:https://www.cnblogs.com/sndd/p/11958916.html
Copyright © 2011-2022 走看看