python3百度贴吧爬虫案例

来源:互联网 发布:文明5 mac 语言 编辑:程序博客网 时间:2024/05/30 04:40

本案例是演示用python爬取贴吧指定页码的页面并保存到文件,适合初学者爬虫练手。

在清楚了需求的基础上,首先我们要清楚实现步骤,大概可以分为三步:

1、分析需要爬取的网址,找出不同页码的url之间的规律(这步很关键):

通过分析发现不同的页码的url类似,只是参数pn发生了改变,分析得:pn = (i-1)*50(i是当前页码数,如果是第1页,i就是1,pn就是0,以此类推……)

2、发送请求,获取到访问不同页码的url页面的响应数据;

3、将响应的页面对象保存到文件中。

python代码如下:

#获取百度某贴吧指定范围页码的页面
import urllib.request
import urllib.parse

def loadPage(url):
    '作用:根据url发送请求,获取服务器响应文件'
    'url:需要爬取的url地址'
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'}
    request = urllib.request.Request(url,headers=headers)
    response = urllib.request.urlopen(request)
    return response.read()
    
def writePage(html,filename):
    '作用:将html写入文件'
    with open(filename,'wb') as f:
        f.write(html)


def tiebaSpider():
    '''
    作用:获取页面
    url:需要爬去的url
    startpage:起始页码
    endpage:截止页码
    '''
    url = 'http://tieba.baidu.com/f?'
    word = input('输入你要获取的贴吧名:')
    startpage = input('请输入起始页码:')
    endpage = input('请输入结束页码:')
    for i in range(int(startpage),int(endpage)+1):
        pn = (i-1)*50
        params = {'kw':word,'pn':pn}
        url = url + urllib.parse.urlencode(params)
        print('正在下载第'+str(i)+'页')
        html = loadPage(url)
        filename = '第'+str(i)+'个.html'
        print('正在保存第'+str(i)+'页')
        writePage(html,filename)


if __name__ == '__main__':
    tiebaSpider()

运行结果如下:


保存的文件如下: