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)
        

    运行结果截图:

  • 相关阅读:
    设计模式怎样解决设计问题
    抽象、多样性与可变性
    框架最符合开闭原则
    PHP开发api接口安全验证
    HTTP API接口安全设计
    MySQL——修改root密码的4种方法(以windows为例)
    关于nginx中不用.htaccess 用在ningx.conf中配置的问题
    API接口安全性设计
    Linux上vi(vim)编辑器使用教程
    LNMP下FTP服务器的安装和使用(Pureftpd和Proftpd)
  • 原文地址:https://www.cnblogs.com/sndd/p/11958916.html
Copyright © 2011-2022 走看看