美文网首页
简单的爬虫爬取整个LOL贴吧网页

简单的爬虫爬取整个LOL贴吧网页

作者: carebon | 来源:发表于2018-07-18 22:20 被阅读0次

    看了CZBK的一个老师的很老的视频,做个小小的记录。

    首先是主函数,

    if __name__ == "__main__":
        url =input("请输入贴吧的url")
        print (url)
        begin_page = int(input("请输入起始页码"))
        end_page = int (input("请输入终止页码"))
        # print (begin_page)
        # print (end_page)
        tieba_spider(url,begin_page,end_page) 
    

    作为程序入口

    然后我们写一个页面loading函数。

    def load_page(url):
    
        '''
            发送url请求
            返回url请求html页面
        '''
        user_agent="Mozilla/5.0(compatible; MSIE 9.0; Window NT 6.1; Trident/5.0;"
        hearers = { "User_Agent":user_agent}
    
        req = urllib.request.Request(url, headers = hearers)
    
        response = urllib.request.urlopen(req)
    
        html = response.read()
        # print (html)
        return html
    

    另外还需要组成贴吧URL的贴吧方法

    def tieba_spider(url, begin_page,end_page):
        '''
              贴吧方法
        '''
    
        for i in range(begin_page,end_page+1): 
          #i = 1, pn = 0
          #i = 2, pn = 100
          #i = 3, pn = 150
          #...
          pn = 50 * (i - 1)
    
          #组成一个完整url
          my_url = url + str(pn)
          # print("请求地址:")
          # print(my_url) 
          tiehtml = load_page(my_url)
          # print("=====这是第%d==="%(i))
          # print (tiehtml)
          # print("==================")
          file_name=str(i)+".html"
          write_to_file(file_name,tiehtml)
    

    当然我们还要对HTML页面进行存储,存储的步骤是打开文件,读写文件,关闭文件。文件读写完毕一定要及时关闭,要不然会对系统造成不必要的浪费。

    def write_to_file(file_name,txt):
        '''
           将text文本  存入file_name文件中
        '''
        print("正在存储文件:"+file_name)
        #1打开文件
        f = open(file_name,'wb+')
        #2读写文件
        f.write(txt)
        #2关闭文件
        f.close()
        
    

    按照程序提示的步骤一步步提交所需参数,就可以得到如下图所示。

    当然这个是对网页没有任何处理的,我们跳过了爬虫筛选的重要一步。

    image.png

    爬虫的步骤参考下图

    image.png

    小记一下,今天使用open打开文件的时候出现了下面的错误。

    注:我用的是Python3.6.1版本。

    TypeError: write() argument must be str, not bytes
    网上搜索才发现原来是文件打开的方式有问题。

    之前文件打开的语句是:

    filehandle = open(WAV_FILE, 'w')
    然后使用二进制方式打开就没有这个问题:

    filehandle = open(WAV_FILE, 'wb+')
    产生问题的原因是因为存储方式默认是二进制方式。

    相关文章

      网友评论

          本文标题:简单的爬虫爬取整个LOL贴吧网页

          本文链接:https://www.haomeiwen.com/subject/rsgapftx.html