`
小taomi_77
  • 浏览: 43109 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

爬虫时遇到需要登陆的网站如何解决

 
阅读更多
数据为主的互联网时代,谁掌握了有价值的数据就等于掌握了商机,爬虫行业的出现就显得尤为重要。爬虫就是为了获取数据而诞生。那些价值高的网站数据应对爬虫做的策略也不是一般的多,并且还很严。比如很多网站会限制访客的访问行为,花还有些网站是需要进行登陆才能获取数据。针对这种需要登陆的网站最有用的方法就是获取目标网站的cookie,然后再使用cookie配合代理IP进行数据采集分析。
需要登陆的网站一般有2种方式进行登陆。
1 使用表单登陆
这种情况属于post请求,即先向服务器发送表单数据,服务器再将返回的cookie存入本地。
import requests
data = {'data1':'XXXXX', 'data2':'XXXXX'}
response = requests.post(url=url, data=data)
2 使用cookie登陆
使用cookie登陆,服务器会认为你是一个已登陆的用户,所以就会返回给你一个已登陆的内容。因此,需要验证码的情况可以使用带验证码登陆的cookie解决。
#! -*- encoding:utf-8 -*-
import requests
import random
import requests.adapters

# 要访问的目标页面
targetUrlList = [
"https://httpbin.org/ip",
"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,
}

# 访问三次网站,使用相同的Session(keep-alive),均能够保持相同的外网IP
s = requests.session()

# 设置cookie
cookie_dict = {"JSESSION":"123456789"}
cookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)
s.cookies = cookies

for i in range(3):
for url in targetUrlList:
r = s.get(url, proxies=proxies)
print r.text

若存在验证码,此时采用response = requests_session.post(url=url_login, data=data)是不行的,做法应该如下:
response_captcha = requests_session.get(url=url_login, cookies=cookies)
response1 = requests.get(url_login) # 未登陆
response2 = requests_session.get(url_login) # 已登陆,因为之前拿到了Response Cookie!
response3 = requests_session.get(url_results) # 已登陆,因为之前拿到了Response Cookie!
cookie的获取虽然也是爬虫获取数据的一个重要步骤,但是也还需要有其他的辅助,比如代理ip的使用,之前分享过代理ip的详细使用过程。如果有小伙伴对代理ip有需要的推荐使用亿牛云的代理,小编认识的很多爬虫朋友都使用他们家,并且都觉得是很靠谱的代理商。
分享到:
评论

相关推荐

    需要登录才能抓取的新浪微博爬虫例子

    本篇将详细介绍一个解决“需要登录才能抓取的新浪微博爬虫例子”,帮助你理解和构建类似的爬虫程序。 首先,我们需要理解微博登录抓取的基本流程: 1. **模拟登录**:使用Python的requests库发送HTTP请求,模拟...

    Python-解决爬虫中遇到的js加密问题

    在Python Web爬虫开发中,我们经常会遇到网页数据被JavaScript加密的情况,这使得直接通过简单的HTTP请求获取到的HTML源代码并不能直接解析出我们需要的数据。本文将深入探讨如何解决这一问题,主要涵盖以下几个方面...

    网络爬虫遇到的问题与解决方法1

    在进行网络爬虫开发时,我们常常会遇到各种问题,这些问题涵盖了从代码语法错误到运行时异常等各个方面。以下是对这些常见问题的详细分析及解决方法: 1. **Invalid escape sequence**:Java 中的字符串使用反斜杠 ...

    Python-Python爬虫京东自动登录在线抢购商品源码.zip

    2. **模拟登录**:为了能够登录京东网站,爬虫需要模拟用户登录过程。这通常涉及到发送登录请求,携带用户名、密码等信息,并处理登录页面可能的验证码和cookie。可能会使用`requests.Session()`来保持会话状态。 3...

    主题爬虫_python爬虫_百度爬虫_百度_

    在构建百度爬虫时,我们需要了解百度网站的结构和数据组织方式。通常,网页数据可以通过HTML元素、JavaScript或者API接口获取。对于静态网页,我们可以直接解析HTML源码;而对于动态加载的内容,可能需要利用`...

    爬虫卡死问题解决.zip

    描述中提到“爬虫百例第68案例素材”,暗示这是一个教学系列的一部分,专门针对初学者,用于演示如何处理在使用Tkinter(Python的GUI库)进行网页抓取时遇到的界面卡死问题。 Tkinter是Python的标准图形用户界面库...

    python解决网站的反爬虫策略总结

    本文详细介绍了网站的反爬虫策略,在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下。 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。这里我们只讨论数据采集部分。 一般网站从三个方面...

    网络爬虫作业练习_爬虫_python学习_网络爬虫_python_

    在进行网络爬虫作业练习时,我们需要掌握以下技能: 1. **URL构造与请求**:理解HTTP协议,知道如何根据URL构造请求,设置参数如参数编码、代理、重试机制等。 2. **网页解析**:学习使用BeautifulSoup或其他解析...

    Java爬虫详细完整源码实例

    10. **验证码识别与登录模拟**:对于需要登录的网站,爬虫可能需要模拟用户登录过程,这可能涉及到Cookie管理、表单提交,甚至可能需要用到OCR技术识别验证码。 这个“Java爬虫完整实例源码”应该包含了以上部分或...

    爬虫 登陆 知乎 android java

    8. **模拟登录**:在登录过程中,可能会遇到验证码、滑动验证等安全措施,这需要额外的技术来解决,如图像识别(OCR)和模拟滑动。 9. **持续登录**:为了维持登录状态,爬虫需要正确处理Cookie和Session。在每次...

    爬虫代码实例源码大全+Python 爬虫Scrapy课件源码.zip

    "项目说明.zip"可能是对整个学习资源包的详细说明,包含了如何使用这些资料、各个文件的功能介绍以及可能遇到的问题和解决方法。 总的来说,这个资源包为Python Scrapy的学习提供了丰富的实践材料。通过学习和实践...

    python 爬虫(amazon, confluence ...)-spider.zip

    9. **异常处理**:在爬虫过程中,可能会遇到各种异常,如网络错误、编码问题等,需要通过try-except语句进行捕获和处理。 10. **爬虫法规**:爬虫使用必须遵守法律法规,不得侵犯他人隐私,尊重版权,避免商业用途...

    一个图片爬虫和音乐爬虫

    首先,我们需要设置爬虫的目标网站,然后使用requests库发送HTTP请求获取页面内容。解析HTML后,提取出所有图片链接,再逐一下载图片。为了防止IP被封或者请求过于频繁,可以使用代理IP池和设置延时。同时,考虑到...

    JS动态加载以及JavaScriptvoid(0)的爬虫解决方案.docx

    然而,这种技术也给网络爬虫带来了新的挑战,尤其是当网站使用`JavaScriptvoid(0)`的方式来隐藏实际的资源链接时。本文将详细介绍如何解决这一问题,并以36Kr网站为例,演示具体的爬取过程。 #### 二、JS动态加载...

    爬虫电影_爬虫_电影网_VBa_

    在实际应用中,VBA爬虫的开发还包括错误处理和日志记录,以确保在遇到问题时能够快速定位和解决。同时,为了提高爬取效率,可以采用多线程或多进程技术,但需要注意不要对目标网站造成过大压力,以免违反网站的使用...

    爬虫工具抓取注意事项

    本文将详细介绍在使用爬虫软件抓取信息时需要注意的关键事项,帮助读者更好地理解并规避潜在的风险。 #### 一、遵守网站规则与法律规范 在进行任何爬取工作之前,首先要了解目标网站的相关规定。大多数正规网站会...

    网络爬虫 Python爬虫 可爬取贴吧新闻等

    5. **异常处理**:编写异常处理代码,确保爬虫在遇到错误时能继续运行。 6. **分布式爬取**:当数据量巨大时,可以使用`Scrapy`框架进行分布式爬取,提高效率。 对于Python毕设项目,这样的爬虫设计不仅能够展示...

    基于Python的网络爬虫与反爬虫技术的研究.pdf

    在开发爬虫程序时,还需要注意遵守相关法律法规,尤其是网站的robots.txt文件中规定的爬虫协议。该协议指明了哪些页面或数据允许爬虫程序爬取。不遵守该协议可能会导致法律问题,甚至对网站造成损害,比如造成服务器...

    woaidu网站爬虫_Python爬虫网站源代码.zip

    标题中的“woaidu网站爬虫_Python爬虫网站源代码....同时,这也能让你掌握如何处理爬虫可能遇到的问题,比如动态加载内容、登录抓取、验证码识别等。对于想要深入学习Python爬虫技术的人来说,这是一个很好的实践机会。

Global site tag (gtag.js) - Google Analytics