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)
        

    运行结果截图:

  • 相关阅读:
    前端CSS部分知识整理
    css随笔记(持续更新)
    前端样式脚本本地化开发
    样式脚本本地化开发方法①【前端开发技巧】
    微信公众号吸粉简易新策略(自整理持续待更新)
    Wave
    无聊时百度了一下自己的名字。吓到我了
    Java实现 LeetCode 819 最常见的单词(暴力)
    Java实现 LeetCode 819 最常见的单词(暴力)
    Java实现 LeetCode 823 带因子的二叉树(DP)
  • 原文地址:https://www.cnblogs.com/sndd/p/11958916.html
Copyright © 2011-2022 走看看