‘’’
    之前写的都是顺着来,若再多一点的请求呢?那不是要写很多很多?
    所以要改写?怎样改写呢?
    写成函数的,这样就尽可能的重用代码了
    考虑实现的功能可以写成三个部分:请求页面,写入文件,主函数(main)
    ‘’’

    1. import urllib.request
    2. import urllib.parse
    3. def readPage(url): # 请求页面
    4. # 请求头
    5. headers = {
    6. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
    7. }
    8. req = urllib.request.Request(url, headers=headers)
    9. res = urllib.request.urlopen(req)
    10. html = res.read().decode('utf-8') # 要用decode('utf-8')来解码,这样才能看得懂!
    11. return html
    12. def writePage(filename, html): # 写入文件
    13. with open(filename, 'w', encoding='utf-8') as f:
    14. f.write(html)
    15. def main(): # 主函数
    16. name = input("请输入你要查询的贴吧名:")
    17. begin = int(input('请输入从第几页开始查询:')) # 如1
    18. end = int(input('请输入从第几页结束查询:')) # 如2
    19. # 因name为中文,浏览器不认识中文,所以要对name进行编码
    20. name1 = urllib.parse.quote(name) # 用urllib.parse的quote方法来对name进行编码
    21. for page in range(begin, end + 1): # range:左闭右开 1-5
    22. pn = (page - 1) * 50
    23. # 拼接url
    24. url = f'https://tieba.baidu.com/f?kw={name1}&pn={pn}'
    25. # 写入文件 第{page}页.html
    26. filename = f'{name}的第{page}页.html' # 定义写入文件的文件名
    27. html = readPage(url) # 目的:获取页面的内容
    28. writePage(filename,html)
    29. if __name__ == '__main__':
    30. main()