浏览 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 关于知乎的访问大概的思路就说完了,如果你觉得本文对你有所帮助,那就多多关注小编,分享更多的文章呀。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |