爬虫之爬取百度贴吧html页面

import urllib.request
import urllib.parse
import urllib.error

import logging
 
logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s',
                   datefmt='%Y-%m-%d %H:%M:%S',
                   filename='E:\\北航大数据课程\\爬虫\\贴吧\\crawler.log',
                   level=logging.DEBUG)

def loadPage(url):
#     try:
        headers = {'Accept': 'text/html',
                   'User-Agent': 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5'}
        request = urllib.request.Request(url, headers=headers)
        with urllib.request.urlopen(request) as response:
            html = response.read()
            return html
        
#     except urllib.error.HTTPError as e:
#         import http.server
#         logging.error('HTTPError code: %s and Messages: %s' %(str(e.code),http.server.BaseHTTPRequestHandler.response[e.code]))
#         logging.info('HTTPError headers: ' + str(e.headers))
#         logging.info(e.read().decode('utf-8'))
#         print('Error : urllib.error.HTTPError')
#     except urllib.error.URLError as e:
#         logging.error(e.reason)
#         print('Error : urllib.error.URLError')
        
def writePage(html,filename):
    with open(filename,'wb') as f:
            f.write(html)
            f.close()
            print(f)
         
def tiebaCrawler(url,beginpage,endpage,keyword):
    #再请求路径上再添加关键字
    querystr = {'kw':keyword}
    querystr_encode = urllib.parse.urlencode(querystr)
    ul = url+querystr_encode
    # 获取从beginpage到endpage之间的页面
    for page in range(beginpage,endpage+1):
        pn = (page-1)*50
        fullurl = ul+'&pn='+str(pn)
        html = loadPage(fullurl)
        filename = 'E:\\北航大数据课程\\爬虫\\贴吧\\' + str(page) + '.html'
        writePage(html,filename)
        
if __name__ == "__main__":
    url = 'http://tieba.baidu.com/f?'
    tiebaCrawler(url,1,20,'北京航空航天大学')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值