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)