python爬虫练习(一)之使用urllib获取百度贴吧中的信息

学习编程没有一蹴而就的,无论什么时候都要记住一句话:基础不牢地动山摇!拥有一个扎实的基本功才能有更好的前途如果你对urllib库不太了解,可以去看一看我写的urllib基础,在来看这段代码,相信你会有更多的收获!

需要注意的点: 

        1. quote()转换中文

        2. url拼接

        3. 请求与响应的方式

        4.怎么指定获取的起始页和结束页 

        5. 写入文件的格式

import urllib.parse
from urllib import request
'''
网址分析:
海贼王吧
https://tieba.baidu.com/f?kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&ie=utf-8&pn=0
https://tieba.baidu.com/f?kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&ie=utf-8&pn=50
https://tieba.baidu.com/f?kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&ie=utf-8&pn=100
lol陪玩
https://tieba.baidu.com/f? kw=lol%E9%99%AA%E7%8E%A9 &ie=utf-8& pn=0
https://tieba.baidu.com/f? kw=lol%E9%99%AA%E7%8E%A9 &ie=utf-8& pn=50
'''
url='https://tieba.baidu.com/f?'
headers={
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}

name1=input('请输入你要搜索的贴吧名称:')
# 处理name(贴吧名称)
name=urllib.parse.quote(name1)
start=int(input('请输入起始页:'))
end=int(input('请输入结束页:'))
for i in range(start,end+1):
    #处理页数
    pn=(start-1)*50
    #链接url
    url=f'{url}kw={name}&ie=utf-8&pn={pn}'
    #urlopen请求并接受响应url
    html=urllib.request.urlopen(url)
    html_read=html.read().decode('utf-8')
    #将获取到的内容写入文件
    with open(f'{name1}的贴吧第{i}页.html', mode='w',encoding='utf-8')as f:
        print(f'正在写入第{i}页......')
        f.write(html_read)