爬虫小练习:爬取指定贴吧名的贴吧页面(含注意点)

#coding:utf-8

# from bs4 import BeautifulSoup

import urllib.request
import urllib.parse


def loadPage(url):
    '''
        作用:根据URL发送请求,获取服务器响应文件
        URL:需要爬去的URL地址
        filename:处理的文件名
    '''
    print("正在下载......")
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
    request = urllib.request.Request(url,headers=headers)
    html = urllib.request.urlopen(request).read().decode("utf-8")
    # print(html)
    return html


def writePage(html,filename):
    '''
        作用:将HTML内容写入到本地
        HTML:服务器响应文件内容
    '''
    print("正在保存%s......"%filename)
    filename = "下载的路径" + filename
    with open(filename,"w",encoding="utf-8") as f:
        f.write(html)
        print("保存完成!")
        print("-"*30)


def tiebaSpider(url,beginPage,endPage):
    '''
        作用:贴吧爬虫调度器,负责组合需要爬取每个页面的URL地址
        url:url贴吧URL的前面部分
        beginPage:起始页面
        endPage:终止页面
    '''
    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)
        # print(html)
        writePage(html,filename)


if __name__ == "__main__":
    kw = input("请输入要爬去的贴吧名:")
    beginPage = int(input("请输入起始页:"))
    endPage = int(input("请输入结束页:"))

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

    tiebaSpider(fullurl,beginPage,endPage)
    print("谢谢使用!")

注:爬取到的页面信息,保存为 .html 文件后,再次双击打开,页面并不能完全打开,查看获取到的源码发现,有大量的div层已经被注释掉,页面反爬的一个问题

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011304490/article/details/79955244
个人分类: Python爬虫
想对作者说点什么? 我来说一句

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

关闭
关闭
关闭