如何使⽤python爬⾍爬取要登陆的⽹站你好
由于你是游客
⽆法查看本⽂
请你登录再进
谢谢合作。。。。。
当你在爬某些⽹站的时候
需要你登录才可以获取数据
咋整?
莫慌
把这⼏招传授给你
让你以后从容应对
登录的常见⽅法⽆⾮是这两种
1、让你输⼊帐号和密码登录
2、让你输⼊帐号密码+验证码登录
今天
先跟你说说第⼀种
需要验证码的咱们下⼀篇再讲
第⼀招
Cookie⼤法
你平常在上某个不为⼈知的⽹站的时候
是不是发现你只要登录⼀次
就可以⼀直看到你想要的内容
过了⼀阵⼦才需要再次登录
selenium获取cookie这就是因为 Cookie 在做怪
简单来说
就是每⼀个使⽤这个⽹站的⼈
服务器都会给他⼀个 Cookie
那么下次你再请求数据的时候
你顺带把这个 Cookie 传过去
服务器⼀看
诶,⼩伙⼦是⽼客户啊
有登录过
直接返回数据给他吧
在服务中还可以设置 Cookie 的有效时间
也就是说
当你下次携带⼀个过期了的 Cookie 给服务器的时候
服务器虽然知道你是⽼客户
但是还是需要你重新再登录⼀次
然后再给你⼀个有效的 Cookie
Cookie 的时长周期是服务器那边定的
ok
了解了这⼀点之后
我们就来玩⼀下吧
我们以「逼乎」为例
输⼊地址之后
按⼀下 F12
点击 network 标签
然后登录你的帐号
然后点击其中⼀个
你就可以看到在 Request Headers 有你的 Cookie
有了 Cookie 之后
我们在代码中直接获取我的个⼈信息
import requests
headers = {
# 假装⾃⼰是浏览器
'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',
# 把你刚刚拿到的Cookie塞进来
'Cookie': 'eda38d470a662ef3606390ac3b84b86f9; Hm_lvt_f1d3b035c559e31c390733e79e080736=1553503899; biihu__user_login=omvZVatKKSlcXbJGmXXew9BmqediJ4lzNoYGzLQjTR%2Fjw1wOz3o4lIacanmcNncX1PsRne5tXpE9r1sqrkdhAYQrugGVfaBICYp }
session = requests.Session()
response = ('/people/wistbean%E7%9C%9F%E7%89%B9%E4%B9%88%E5%B8%85', headers=headers)
)
运⾏后可以发现不⽤登录就可以直接拿到⾃⼰的个⼈信息了
<!DOCTYPE html>
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" />
<meta name="renderer" content="webkit" />
<title>⼩帅b真特么帅的个⼈主页 - 逼乎</title>
<meta name="keywords" content="逼乎,问答,,逼乎⽹站" />
<meta name="description" content="逼乎,与世界分享你的技巧与见解" />
<base href="/" rel="external nofollow" /><!--[if IE]></base><![endif]-->
<link rel="stylesheet" type="text/css" href="/static/css/bootstrap.css" rel="external nofollow" />
<link rel="stylesheet" type="text/css" href="/static/css/icon.css" rel="external nofollow" />
<link href="/static/css/default/common.css?v=20180831" rel="external nofollow" rel="stylesheet" type="text/css" />
<link href="/static/css/default/link.css?v=20180831" rel="external nofollow" rel="stylesheet" type="text/css" />
<link href="/static/js/plug_module/style.css?v=20180831" rel="external nofollow" rel="stylesheet" type="text/css" />
<link href="/static/css/default/user.css?v=20180831" rel="external nofollow" rel="stylesheet" type="text/css" />
<link href="/static/css/mood/mood.css" rel="external nofollow" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _02AEC94D5CA08B39FC0E1F7CC220F9B4="a5359326797de302bfc9aa6302c001b8";
var G_POST_HASH=_02AEC94D5CA08B39FC0E1F7CC220F9B4;
var G_INDEX_SCRIPT = "";
var G_SITE_NAME = "逼乎";
var G_BASE_URL = "";
var G_STATIC_URL = "/static";
var G_UPLOAD_URL = "/uploads";
var G_USER_ID = "188";
var G_USER_NAME = "666";
var G_UPLOAD_ENABLE = "Y";
var G_UNREAD_NOTIFICATION = 0;
var G_NOTIFICATION_INTERVAL = 100000;
var G_CAN_CREATE_TOPIC = "1";
var G_ADVANCED_EDITOR_ENABLE = "Y";
var FILE_TYPES = "jpg,jpeg,png,gif,zip,doc,docx,rar,pdf,psd";
</script>
<script src="/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
cookies = _cookies()
有了 Cookie 你就可以拿到你想要的数据了,希望对你有帮助
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论