现在时间是:
当前位置:首 页 >> 数据采集>> 文章列表

Requests 测试几种请求登录的模式

作者:   发布时间:2016-02-26 13:49:21   浏览次数:1675

最近在采集几个网站的数据,不是需要登录,就是被百度云加速拦截,差点被逼到使用重型机械selenium的份上。

本着多怀疑自己的精神,昨天晚上捣腾到十点多,还是没有成功,不过编写了自己的函数myheader,呵呵,用来简易匹配firebug参数!

中午休息时间,又开始测试,心想万能的requests建立在urllib3的基础上,应该不至于这么挫吧。

Python3中不支持cookielib,一些自动化加载的尝试也就终止了。

不过好在最后通过三种方式调试成功,第一种是最简单,后面的两种方法有点多此一举了!

 

在此基础上,一些非JS直接显示的动态网站基本上就可以拿下,其次,该方法还可以用在各种网站、论坛的推广上,稍后再测试...

再次想到大牛的那句哞:Web前端无秘密......

 

 


import requests
from bs4 import BeautifulSoup
import csv
import re
import os
import time
import myheader as mde
# encoding: utf-8
__author__ = 'yeayee.com' # 增加注释,可随意Fork、Copy
my_header = '''Host: www.yeayee.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: __cfduid=dcfd6927f9e3378978978789776d31456445810; cf_clearance=d570ab1ce9f78979878973192a511b1b50-1456445814-31536000; __utma=247588352.440250717.1456445815.1456445815.1456461112.2; __utmc=247588352; __utmz=247588352.1456445815.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); bdshare_firstime=1456445815432; Hm_lvt_eda63048a2a5f2f971045c7b18e63a72=1456397628,1456445675; Hm_lpvt_eda63048a2a5f2f971045c7b18e63a72=1456461112; __utmb=247588352.1.10.1456461112; __utmt=1
Connection: keep-alive'''
my_cookie = '''__cfduid=dcfd6927f9e37897978974926d31456445810; cf_clearance=d570ab1ce9f05e349209cde02a83192a511b1b50-1456445814-31536000
; __utma=247588352.440250717.1456445815.1456445815.1456461112.2; __utmc=247588352; __utmz=247588352.1456445815
.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); bdshare_firstime=1456445815432; Hm_lvt_eda63789787987045c7b18e63a72
=1456397628,1456445675; Hm_lpvt_eda63048a2a5f2f971045c7b18e63a72=1456461112; __utmb=247588352.1.10.1456461112
; __utmt=1'''

my_headerc = mde.get_myheaderc(my_header) # 头文件中包含cookies
my_headers = mde.get_myheaders(my_header) # 头文件中不包含cookies
my_cookies = mde.get_cookies(my_cookie) # 仅仅获取cookies
s = requests.session()
base_url = 'http://www.yeayee.com'

# 方法一,利用cookiec直接访问
def get_in_url(full_url):
re_text = s.get(full_url,headers=my_headerc).text
print(re_text)
try:
get_in_url(base_url)
except:
pass

# 方法二,先更新cookies,访问
def get_in_url(full_url): #
s.cookies.update(my_cookies)
re_text = s.get(full_url,headers=my_headers).text
print(re_text)
try:
get_in_url(base_url)
except:
pass

# 方法三,直接在请求中添加cookies
def get_in_url(full_url):
re_text = s.get(full_url,headers=my_headers,cookies=my_cookies).text
print(re_text)
try:
get_in_url(base_url)
except:
pass






上一篇:没有了    下一篇:没有了

Copyright ©2018    易一网络科技|www.yeayee.com All Right Reserved.

技术支持:自助建站 | 领地网站建设 |短信接口 版权所有 © 2005-2018 lingw.net.粤ICP备16125321号 -5