python爬虫重定向问题_爬取网站要登录?46行代码解决问题,python爬虫随心所欲!...

在爬取需要登录的网站时,本文介绍了两种方法:利用Cookie和Selenium自动登录。通过理解Cookie的工作原理,可以携带已登录的Cookie进行请求,跳过登录步骤。此外,Selenium允许模拟浏览器行为,自动填写账号密码并点击登录,随后获取Cookie以获取数据。这两个技巧能帮助Python爬虫轻松应对登录问题。
摘要由CSDN通过智能技术生成

世界那么大,谢谢你来看我!!关注我你就是个网络、电脑、手机小达人

当你在爬某些网站的时候,需要你登录才可以获取数据,咋整?莫慌,把这几招传授给你,让你以后随心所欲的爬!

d3a777d9ff4544a5ca63e5b1c0861732.png

0ab8bf286be3ab806c900361399db344.png

一:Cookie大法

你平常网站浏览的时候,是不是发现你只要登录一次,就可以一直看到你想要的内容,过了一阵子才需要再次登录?其实每个使用这个网站的人,服务器都会给他一个 Cookie,下次你再请求数据的时候,顺带把这个 Cookie 传过去,服务器一看,有登录过,直接返回数据给他吧!

在服务中还可以设置 Cookie 的有效时间,也就是说,当你下次携带一个过期了的 Cookie 给服务器的时候,虽然知道你是老客户,但是还是需要你重新再登录一次,然后再给你一个有效的 Cookie,Cookie 的时长周期是服务器那边定的。

2c3104a4eb781d3c1fa706b0491f9b48.png

了解了这一点之后,我们就来正式解决问题吧!我们以“逼乎”为例:

https://biihu.cc/account/login/

输入地址之后,按一下 F12,点击 network 标签,然后登录你的帐号,然后点击其中一个,你就可以看到在 Request Headers 有你的 Cookie

cf95b45cc8cb13c0f8234f53a51ec9b5.png

有了 Cookie 之后,我们在代码中直接获取我的个人信息。

1 import requests
2 headers = {
3 # 假装自己是浏览器
4 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/73.0.3683.75 Chrome/73.0.3683.75 Safari/537.36',
5 # 把你刚刚拿到的Cookie塞进来
6 'Cookie': 'eda38d470a662ef3606390ac3b84b86f9; Hm_lvt_f1d3b035c559e31c390733e79e080736=1553503899; biihu__user_login=omvZVatKKSlcXbJGmXXew9BmqediJ4lzNoYGzLQjTR%2Fjw1wOz3o4lIacanmcNncX1PsRne5tXpE9r1sqrkdhAYQrugGVfaBICYp8BAQ7yBKnMpAwicq7pZgQ2pg38ZzFyEZVUvOvFHYj3cChZFEWqQ%3D%3D; Hm_lpvt_f1d3b035c559e31c390733e79e080736=1553505597',
7 }
8 session = requests.Session()
9 response = session.get('https://biihu.cc/people/wistbean%E7%9C%9F%E7%89%B9%E4%B9%88%E5%B8%85', headers=headers)
10 print(response.text)

运行后可以发现不用登录就可以直接拿到自己的个人信息了

1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
5 <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport" />
6 <meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" />
7 <meta name="renderer" content="webkit" />
8 <title>小帅b真TM帅 的个人主页 - 逼乎</title>
9 <meta name="keywords" content="逼乎,问答,装逼,逼乎网站" />
10 <meta name="description" content="逼乎 ,与世界分享你的装逼技巧与见解" />
11 <base href="https://biihu.cc/" rel="external nofollow" /><!--[if IE]></base><![endif]-->
12 <link rel="stylesheet" type="text/css" href="https://biihu.cc/static/css/bootstrap.css" rel="external nofollow" />
13 <link rel="stylesheet" type="text/css" href="https://biihu.cc/static/css/icon.css" rel="external nofollow" />
14 <link href="https://biihu.cc/static/css/default/common.css?v=20180831" rel="external nofollow" rel="stylesheet" type="text/css" />
15 <link href="https://biihu.cc/static/css/default/link.css?v=20180831" rel="external nofollow" rel="stylesheet" type="text/css" />
16 <link href="https://biihu.cc/static/js/plug_module/style.css?v=20180831" rel="external nofollow" rel="stylesheet" type="text/css" />
17 <link href="https://biihu.cc/static/css/default/user.css?v=20180831" rel="external nofollow" rel="stylesheet" type="text/css" />
18 <link href="https://biihu.cc/static/css/mood/mood.css" rel="external nofollow" rel="stylesheet" type="text/css" />
19 <script type="text/javascript">
20 var _02AEC94D5CA08B39FC0E1F7CC220F9B4="a5359326797de302bfc9aa6302c001b8";
21 var G_POST_HASH=_02AEC94D5CA08B39FC0E1F7CC220F9B4;
22 var G_INDEX_SCRIPT = "";
23 var G_SITE_NAME = "逼乎";
24 var G_BASE_URL = "https://biihu.cc";
25 var G_STATIC_URL = "https://biihu.cc/static";
26 var G_UPLOAD_URL = "/uploads";
27 var G_USER_ID = "188";
28 var G_USER_NAME = "666";
29 var G_UPLOAD_ENABLE = "Y";
30 var G_UNREAD_NOTIFICATION = 0;
31 var G_NOTIFICATION_INTERVAL = 100000;
32 var G_CAN_CREATE_TOPIC = "1";
33 var G_ADVANCED_EDITOR_ENABLE = "Y";
34 var FILE_TYPES = "jpg,jpeg,png,gif,zip,doc,docx,rar,pdf,psd";
35 </script>
36 <script src="https://biihu.cc/static/js/jquery.2.js?v=20180831" type="text/javascript"></script>

除此之外还有一个方法

二:Selenium 自动登录法

获取到两个输入框的元素,再获取到登录按钮,往输入框写你的帐号密码,然后自动点击一下登录

username = WAIT.until(EC.presence_of_element_located((By.CSS_SELECTOR, "帐号的selector")))
password = WAIT.until(EC.presence_of_element_located((By.CSS_SELECTOR, "密码的selector")))
submit = WAIT.until(EC.element_to_be_clickable((By.XPATH, '按钮的xpath')))
username.send_keys('你的帐号')
password.send_keys('你的密码')
submit.click()

登录完之后拿到 Cookie

1 cookies = webdriver.get_cookies()

有了 Cookie 你就可以拿到你想要的数据了,以上就是本文的全部内容,希望对大家的学习有所帮助,觉得文章还可以的话不妨收藏起来慢慢看,有任何意见或者看法欢迎大家评论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值