requests获取网页贴吧页面

今天学习获取贴吧网页,尝试requestsurllib两个库。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库再改了一些,之后就成功了
运行后的界面,可以发现多出了几个HTML文件今天就是这样,试了好几次终于把页面导出来了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值