今天学习获取贴吧网页,尝试requests和urllib两个库。urllib中的urlopen返回的是一种类似文件对象,不能直接输出文本格式,于是有引入了一个requests库,requests中的get返回的是一个文本,可以保存在一个html文件里
from urllib.request import Request,urlopen
from urllib.parse import urlencode
import requests
def get_html(url):
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'
} #用的是火狐的浏览器模拟
#request=Request(url,headers=headers)
resp=requests.get(url,headers=headers)
# response=urlopen(request)
# print(response.read().decode())
return resp
def save_html(filename,html_bytes):
with open(filename,'w',encoding='utf-8') as f:
f.write(html_bytes.text)
def main():
content=input('输入要下载的内容:')
num=input('输入要下载的页数:')
base_url = 'https://tieba.baidu.com/f?kw==utf-8&{}' #抓取的是我们学校的贴吧网页
for pn in range(int(num)):
args={
'pn':pn*50,
'kw':content
} #观察网页网址,可以发现每一页贴吧界面里的pn都是每次增加50
filename='第'+str(pn)+'页.html' #格式化输出导出的文件名
args=urlencode(args)
print('正在下载'+filename)
html_bytes=get_html(base_url.format(args))
save_html(filename,html_bytes)
if __name__=="__main__":
main()
在代码中被注释掉的部分是原本用urllib库导出的网页,但我尝试下载下页面时却返现什么也没有,无奈只能用requests库再改了一些,之后就成功了
今天就是这样,试了好几次终于把页面导出来了