论坛首页 海阔天空论坛

如何获取知乎数据

浏览 378 次
精华帖 (0) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2021-09-07  
大家好,我是喜欢分享爬虫知识的小编,相信各位小伙伴都经常会刷知乎,前几天和朋友讨论了下关于知乎访问的一些点,虽然折腾了会时间,最后还是成功爬取到了相关的数据。
其实能够利用自己学会的技术爬取到数据,用处有很多,但是看自己怎么用,小编这里跟大家说千万别拿数据做盈利,不然小心进局子,爬取数据就当提升自己的技术和见识吧。
其实知乎数据的获取是有一些难度,尤其是对于js不是很熟悉的朋友,我在爬取过程中也是遇到了一些问题,最后也在百度上参考了一些大佬的思路才得以获取。像这些大型网站js加密会经常性的更新和变化,所以了解思路就行是很重要的。
知乎是需要登录的,并且限制ip,这里我们就分享下,在遇到需要登录的网站时怎么在挂上代理的时候进行数据获取。因为我们这里比较特殊,登录,获取数据需要在同一个ip下进行。这时我们就需要通过控制随机数来完成。那么我们在代码里面是如何控制随机数的呢?分享示例如下
#! -*- encoding:utf-8 -*-
    import requests
    import random
    import requests.adapters

    # 要访问的目标页面
    targetUrlList = [
        "https://https://www.zhihu.com/",
        "https://httpbin.org/headers",
        "https://httpbin.org/user-agent",
    ]

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

    # 代理验证信息
    proxyUser = "username"
    proxyPass = "password"

    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)
            print r.text
关于知乎的访问大概的思路就说完了,如果你觉得本文对你有所帮助,那就多多关注小编,分享更多的文章呀。
论坛首页 海阔天空版

跳转论坛:
Global site tag (gtag.js) - Google Analytics