Python爬虫如何爬取贴吧内容

2020/09/27 08:36

爬取贴吧内容

先了解贴吧url组成:

每个贴吧url都是以'https://tieba.baidu.com/f?'开头,然后是关键字 kw=‘’贴吧名字‘’,再后面是 &pn=页数  (pn=0第一页,pn=50第二页,依次类推)

更多关于Python爬虫的相关知识,可以关注Python学习网的Python爬虫栏目。

1.先写一个main,提示用户输入要爬取的贴吧名,并用urllib.urlencode()进行转码,然后组合url

2.接下来,写一个百度贴吧爬虫接口tiebaSpider(),需要传递3个参数给这个接口, 一个是main里组合的url地址,以及起始页码和终止页码,表示要爬取页码的范围。

3.前面写出一个爬取一个网页的代码。然后,将它封装成一个小函数loadPage(),供我们使用。

相关推荐:《Python视频教程》

4.将爬取到的每页的信息存储在本地磁盘上,我们可以简单写一个存储文件的接口writePage()

# _*_ coding:utf-8 _*_
import urllib,urllib2
def loadPage(url,filename):
    #根据url发送请求,获取服务器响应文件
    print '正在下载' + filename
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, 
    like Gecko) Chrome/60.0.3112.101 Safari/537.36'}
    request = urllib2.Request(url,headers = headers)
    content = urllib2.urlopen(request).read()
    return content
def writePage(html,filename):
    #将html内容写入到本地
    print '正在保存' + filename
    with open(unicode(filename,'utf-8'),'w') as f:
        f.write(html)
    print '_' * 30
def tiebaSpider(url,beginPage,endPage):
    #贴吧爬虫调度器,负责组合处理每个页面的url
    for page in range(beginPage,endPage + 1):
        pn = (page - 1) * 50
        filename = '第' + str(page) + '页.html'
        fullurl = url + '&pn=' + str(pn)
        # print fullurl
        html = loadPage(fullurl,filename)
        writePage(html,filename)
if __name__ == '__main__':
    kw = raw_input('请输入贴吧名:')
    beginPage = int(raw_input('请输入起始页:'))
    endPage = int(raw_input('请输入结束页:'))
    url = 'https://tieba.baidu.com/f?'
    key = urllib.urlencode({'kw':kw})
    fullurl = url + key
    tiebaSpider(fullurl,beginPage,endPage)

通过输入想要搜索的贴吧名字,爬取内容并保存到本地

免费直播

    精选课程 更多

    注册电脑版

    版权所有 2003-2020 广州环球青藤科技发展有限公司