用户输入关键字,爬取百度贴吧

爬取百度贴吧

#coding=utf-8
import urllib2
import urllib

def loadPage(url, filename):
    '''
        作用:根据url发送请求, 获取服务器响应文件
        url:需要爬取的url地址
        filename:处理文件名
    '''
    head = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}

    print '正在下载' + filename
    request = urllib2.Request(url, headers=head)
    return urllib2.urlopen(request).read()


def writePage(html, filename):
    '''
        作用:将html文件内容写入文件
        html:服务器响应文件
        filename:文件名
    '''
    print '正在保存' + filename
    with open(filename, 'w') as f:
        f.write(html)
    print '_' * 50

def tiebaSpider(url, beginPage, endinPage):
    '''
        作用:贴吧爬虫调度器,负责组合处理每个页面的url
        url:贴吧url的前半部分
        beginPage:起始页
        endinPage:结束页
    '''
    for page in range(beginPage, endinPage + 1):
        filename = '第' + str(page) + '页'
        pn = (page - 1) * 50
        fullurl = url + '&pn=' + str(pn)
        # print fullurl
        html = loadPage(fullurl, filename)
        writePage(html, filename)
    print '谢谢使用'


if __name__ == '__main__':

    kw = raw_input('请输入需要爬取的贴吧名:\n')
    beginPage = int(raw_input('请输入起始页'))
    endinPage = int(raw_input('请输入结束页'))

    url = 'http://tieba.baidu.com/f?'
    key = urllib.urlencode({'kw': kw})
    fullurl = url + key


    tiebaSpider(fullurl, beginPage, endinPage)


-----------------------results of enforcement-----------------------------------------
请输入需要爬取的贴吧名:
python
请输入起始页1
请输入结束页3
正在下载第1页
正在保存第1页
__________________________________________________
正在下载第2页
正在保存第2页
__________________________________________________
正在下载第3页
正在保存第3页
__________________________________________________
谢谢使用

----------------------------------------------------------------------------------------------

出现
*第一页
*第二页
*第三页
则成功

展开阅读全文

没有更多推荐了,返回首页