前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自学python如何找到好的老师

自学python如何找到好的老师

原创
作者头像
小白学大数据
发布2023-03-29 15:35:31
8890
发布2023-03-29 15:35:31
举报
文章被收录于专栏:python进阶学习

Python 已经成为一种再主流不过的编程语言了。许多同学开始学习它,又不知道该如何入手,需要依据每个人的情况来决定,想要自学python对各方面有一定要求的,比如说基础好、自学能力强、理解能力强,这种情况是可以选择自学python的。爬虫自学重点就是需要掌握数据抓取、数据提取、数据存储、爬虫并发、动态网页抓取、scrapy框架、分布式爬虫、爬虫攻防、数据结构、算法等知识。很多自学python的同学收集了很多的学习网站,关注了很多python博主,但是却不知道应该选择哪个进行深入的学习。

b站一直都是很受年轻人喜欢的学习网站,各行各业都有在上面学习和分享,也是很多学习python小伙伴的首选。今天我们就通过python爬取b站上自学python哪个老师是最优的选择为需求,来实践一波爬虫操作,主要需求就是获取B站python有关视频排行榜的一些数据,例如标题、UP主、BV号、播放量、弹幕量、评论量、综合得分等数据。

经过简单的网站分析,b站有封IP的反爬机制,这里就需要使用到爬虫代理IP的辅助。b站也是需要进行登录后才能进一步操作的,这里我们就需要考虑到如何控制IP的使用。可以通过设置Proxy-Connection: Keep-Alive和Connection: Keep-Alive可以保持请求在一个TCP会话中,保持代理IP不变。实现过程如下:

代码语言:javascript
复制
 #! -*- encoding:utf-8 -*-
    import requests
    import random
    import requests.adapters

    # 要访问的目标页面
    targetUrlList = [
        "https://www.bilibili.com/",
        "https://www.bilibili.com/",
        "https://www.bilibili.com/",
    ]

    # 代理服务器(产品官网 www.16yun.cn)
    proxyHost = "t.16yun.cn"
    proxyPort = "31111"

    # 代理验证信息
    proxyUser = "16HGRRIK"
    proxyPass = "458687"

    proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
        "host": proxyHost,
        "port": proxyPort,
        "user": proxyUser,
        "pass": proxyPass,
    }

    # 设置 http和https访问都是用HTTP代理
    proxies = {
        "http": proxyMeta,
        "https": proxyMeta,
    }

    #  设置IP切换头
    tunnel = random.randint(1, 10000)
    headers = {"Proxy-Tunnel": str(tunnel)}


    class HTTPAdapter(requests.adapters.HTTPAdapter):
        def proxy_headers(self, proxy):
            headers = super(HTTPAdapter, self).proxy_headers(proxy)
            if hasattr(self, 'tunnel'):
                headers['Proxy-Tunnel'] = self.tunnel
            return headers


    # 访问三次网站,使用相同的tunnel标志,均能够保持相同的外网IP
    for i in range(3):
        s = requests.session()

        a = HTTPAdapter()

        #  设置IP切换头
        a.tunnel = tunnel
        s.mount('https://', a)

        for url in targetUrlList:
            r = s.get(url, proxies=proxies)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档