1. 程式人生 > 程式設計 >python 爬蟲網頁登陸的簡單實現

python 爬蟲網頁登陸的簡單實現

相信各位在寫 python 爬蟲的時候會在爬取網站時遇到一些登陸的問題,比如說登陸時遇到輸入驗證碼比如說登入時遇到圖片拖拽等驗證,如何解決這類問題呢?一般有兩種方案。

使用 cookie 登陸

我們可以通過使用 cookies 登陸,首先獲取瀏覽器的 cookie,然後利用 requests 庫直接登陸 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",]

  # 代理伺服器
  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
若存在驗證碼,此時採用resp**e = requests_session.post(url=url_login,data=data)是不行的,做法應該如下:

resp**e_captcha = requests_session.get(url=url_login,cookies=cookies)
resp**e1 = requests.get(url_login) # 未登陸
resp**e2 = requests_session.get(url_login) # 已登陸,因為之前拿到了Resp**e Cookie!
resp**e3 = requests_session.get(url_results) # 已登陸,因為之前拿到了Resp**e Cookie!

模擬登陸

這裡不得不說一句老話,前人種樹,後人乘涼,當時我想爬一下知乎鹽選的文章,但是卡在了登陸這塊,沒想到搜尋下來發現了一個模擬登陸的庫,非常好用,不過本著好東西不分享防和諧的原則,就不在這裡說了。

具體思路也就是通過 requests 來進行模擬登陸,然後返回一下驗證碼,之後傳入驗證碼即可登陸成功了。

到此這篇關於python 爬蟲網頁登陸的簡單實現的文章就介紹到這了,更多相關python 爬蟲登陸內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!