用requests库爬取百度贴吧.

    要求:

百度贴吧名字和爬取的页码数需要用户自己输入
运行结果要有截图.截图上要看到生成的文件名.截图上要有自己的姓名
代码用纯文本复制.

作业要求

import requests
import urllib
import urllib.parse
import urllib.request

def load_page(full_url, file_name):
    '''
    作用:根据 url发送请求,获取服务器响应文件
    :param full_url: 需要爬取的url地址
    :param file_name:
    :return:
    '''
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"}
    # request=urllib.request.Request(full_url,headers=headers)
    return requests.get(full_url,headers=headers)

def write_page(html, file_name):

    '''
    作用:将html内容写入本地文件
    :param html:
    :param file_name:
    :return:
    '''
    print("正在保存"+file_name)
    with open(file_name,'w',encoding='utf-8') as file:
        file.write(html.text)

def tieba_spider(url, begin_page, end_page):
    '''
    作用:爬虫调度器,负责组合每个页面的url
    :param url: 贴吧url的前半部分
    :param begin_page: 起始页码
    :param end_page: 结束页
    :return:
    '''
    for page in range(begin_page,end_page+1):
        pn=(page-1)*50
        file_name="第"+str(page)+"页.html"
        full_url=url+"&pn="+str(pn)
        html=load_page(full_url,file_name)
        write_page(html,file_name)

if __name__=="__main__":
    kw=input("请输入需要爬取的贴吧名:")
    begin_page=int(input("请输入起始页:"))
    end_page=int(input("请输入结束页:"))
    url='http://tieba.baidu.com/f?'
    key=urllib.parse.urlencode({"kw":kw})
    #组合后的url示例:http://tieba.baidu.com/f?kw=lol
    url=url+key
    tieba_spider(url,begin_page,end_page)
NOTE:暂未解决所有疑问,正在学习ing,后续会发布解释以及注解。