requests库在爬虫的实践开发运用中较为常用,实现HTTP请求协议时方法简单,操作方便,易于实现。对于一般的静态网页,都可以方便抓取想要的内容,比起scrapy等框架有明显的优势,爬取定向的简单内容,是极好的。

下面就是运用requests模块,实现一个简单的爬取贴吧网页的爬虫程序。该栗子创建一个类,方便有需要时直接调用继承。

闲言少叙,上菜!!!接代码!!!

看着代码挺多,去掉注释,所剩无几,这也是python魅力所在,哈哈哈!!!

import requests
class Tiebaspider:
    def __init__(self,tieba_name_crawl):
        #初始化必要参数,完成基础的设置
        #贴吧名称
        self.tiebaname = tieba_name_crawl
        #种子链接 
        self.url_base = 'https://tieba.baidu.com/f?kw='+ tieba_name_crawl +'&ie=utf-8&pn={}'
        #请求头信息 
        self.hearders  = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0'}

    #获得要的页面下载列表
    def make_list_down(self):
        #列表生成式  返回值是下载链接,带有页码
        # return [self.url_base.format(i) for i in range(3)]
        #注意注意注意!!!贴吧的源码HTML是50条翻一页,pn=50,想要获得第二页pn值要大于50,依次类推
        return [self.url_base.format(i) for i in [0,55,102]]

    #获得下载的页面内容
    def download_url(self,url_str):
        #获得页面请求响应   使用request.get方法下载指定页面,并返回页面的结果
        #url_str下载链接
        result = requests.get(url_str,headers =self.hearders)
        # print(result.text)
        #返回下载的页面内容
        return result.content
    #保存下载的内容
    def save_result(self,result,page_num):
    #路径(相对/绝对都可以)
        file_path = 'D:/4spider/spider_review02/review02/download2/{}--第{}页.html'.format(self.tiebaname,page_num)
        with open(file_path,'wb') as f:
            f.write(result)

#执行逻辑,程序执行的顺序
    def run(self):
        #调用make_list_down()方法
        url_list = self.make_list_down()
        #url_str在url_list中  循环遍历
        for url_str in url_list:
            #调用download_url() 方法
            result_str = self.download_url(url_str)
            #页码 索引值在获得的页码列表中 循环加1
            p_num = url_list.index(url_str) + 1
            #调用save_result()方法保存,保存下载的页面
            self.save_result(result_str,p_num)

if __name__ =="__main__":
#“李毅”要爬取的贴吧名称
    tieba_spider = Tiebaspider("李毅")
    tieba_spider.run()

注意点:::

     1.学好爬虫的前提HTML页面要666,对css,js,json,ajax等前端页面的知识要会分析;比如此例中,要对贴吧源代码进行分析,查看下一页的样式,不然无法实现翻页功能,也就是只能获得第一页;

     2.分析这种简单爬虫时,要从run方法入手,它是程序的主要实现逻辑;

    3.保存的路径必须是程序能够找到的路径;

    4.最好运用面向对象的方法来解决问题,创建类,封装函数,也就是造轮子,方便下次要实现类似的需求时,作为参考。