龙空技术网

爬取网站要登录?46行代码解决问题,python爬虫随心所欲

最爱脆啵啵 4717

前言:

眼前兄弟们对“jquery弹出登录框”都比较注意,朋友们都想要剖析一些“jquery弹出登录框”的相关内容。那么小编也在网络上收集了一些关于“jquery弹出登录框””的相关知识,希望看官们能喜欢,我们快快来学习一下吧!

喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远!

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

一:Cookie大法

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

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

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

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

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

1 import requests2 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('', 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="" rel="external nofollow" /><!--[if IE]></base><![endif]-->12 <link rel="stylesheet" type="text/css" href="" rel="external nofollow" />13 <link rel="stylesheet" type="text/css" href="" rel="external nofollow" />14 <link href="" rel="external nofollow" rel="stylesheet" type="text/css" />15 <link href="" rel="external nofollow" rel="stylesheet" type="text/css" />16 <link href="" rel="external nofollow" rel="stylesheet" type="text/css" />17 <link href="" rel="external nofollow" rel="stylesheet" type="text/css" />18 <link href="" 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 = "";25 var G_STATIC_URL = "";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="" 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 你就可以拿到你想要的数据了,以上就是本文的全部内容,希望对大家的学习有所帮助,觉得文章还可以的话不妨收藏起来慢慢看,有任何意见或者看法欢迎大家评论!

我是一名python开发工程师,整理了一套python的学习资料,如果你想提升自己,对编程感兴趣,关注我并在后台私信小编:“08”即可免费领取资料!希望对你能有所帮助!

标签: #jquery弹出登录框