#方法一:直接使用coookies登陆,此方法需要提前在浏览器中使用账号密码登陆后,获取浏览器中的cookies,在构造的请求中携带这个cookies(缺点是有时效性)。

#方法二:通过账号密码(From data)登陆,在登陆后获得其中的cookies,之后的对需要登陆的页面操作,只需要携带这个cookies即可

 #以下代码是利用方法1
# -*- coding: utf-8 -*-
import requests;
import sys;
import io;
#重点:标准解析库
from bs4 import BeautifulSoup;
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8'); #改变标准输出的默认编码
#根据cookies访问后台
url = 'http://域名/other/other.comment.wall.php?ac=l&id=&fid=&uid=&title=&source=0&status=0&b_time=&e_time='; #浏览器登录后得到的cookie,也就是刚才复制的字符串
cookie_str = r'PHPSESSID=9f20c6bb676841f38aee8589aceb5c7f; username=zhonghuihong; password=XXX';
#把cookie字符串处理成字典,以便接下来使用
cookies = {};
for line in cookie_str.split(';'):
key, value = line.split('=', 1);
cookies[key] = value;
#设置请求头,直接复制即可
headers = {'User-agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36'};
疑问:请求头header是不是必须要加
搜罗网上的答复:
23 ①、不加,直接裸着请求url,似乎也没有报错,自己尝试也是这样
24 ②、防止封ip,加上准没错
25 ③、禁止反扒机制,输出的text信息中会出现抱歉,无法访问等字眼,这就是禁止爬取(headers是解决requests请求反爬的方法之一,相当于我们进去这个网页的服务器本身,假装自己本身在爬取数据)
26 ④、作为一个良好的习惯,最好都要加上 疑问二:请求头里面已经含有cookies,请求时是否还要重复添加一个cookies=cookies参数
根据自己的实践:不需要重复添加 疑问三:为什么访问android端的接口基本不用提前设置header
header里面是手机端信息,通过手机端页面去爬不会那么容易被封(这个是询问网友来着,至今不知道原因),根据目前实践确实不需要 #在发送get请求时带上请求头和cookies()
resp = requests.get(url, headers = headers, cookies = cookies);
html_resp=resp.content.decode('UTF-8');
#print(resp.content.decode('utf-8'));
soup_string = BeautifulSoup(html_resp, 'html.parser');
soup_table=soup_string.find(attrs={'class':'table table-striped table-bordered table-hover'});
#print(soup_table);
soup_str=soup_table.findAll(attrs={'style':'text-align:center;vertical-align:middle;word-break:break-all; word-wrap:break-all;'});
print(soup_str);
#for soup in soup_str:
#print(soup.string);
#book_div = soup_string.find(attrs={"id":"book"})
#book_a = book_div.findAll(attrs={"class":"title"})
#for book in book_a:
#print book.string
#print(soup_string);

python--实践--模拟浏览器(http)登陆的更多相关文章

  1. python模拟浏览器webdriver登陆网站后抓取页面并输出

    关键在于以下两行代码 特别是find_element_by_xpath写法 很多写成 findElementsByXpath不知道是写错了 还是高级版本是这么写的... #webElement = s ...

  2. 九、Python+Selenium模拟用QQ登陆腾讯课堂,并提取报名课程(练习)

    研究QQ登录规则的话,得分析大量Javascript的加密解密,比较耗时间.自己也是练习很少,短时间成功不了.所以走了个捷径. Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏 ...

  3. python selenium模拟登陆163邮箱。

    selenium是可以模拟浏览器操作. 有些爬虫是异步加载的,通过爬取网页源码是得不到需要的内容.所以可以模拟浏览器去登陆该网站进行爬取操作. 需要安装selenium通过pip install xx ...

  4. python爬虫:使用Selenium模拟浏览器行为

    前几天有位微信读者问我一个爬虫的问题,就是在爬去百度贴吧首页的热门动态下面的图片的时候,爬取的图片总是爬取不完整,比首页看到的少.原因他也大概分析了下,就是后面的图片是动态加载的.他的问题就是这部分动 ...

  5. Spider-Python爬虫之使用Selenium模拟浏览器行为

    分析 他的代码比较简单,主要有以下的步骤:使用BeautifulSoup库,打开百度贴吧的首页地址,再解析得到id为new_list标签底下的img标签,最后将img标签的图片保存下来. header ...

  6. python urllib2 模拟网站登陆

    python urllib2 模拟网站登陆 1. 可用浏览器先登陆,然后查看网页源码,分析登录表单 2. 使用python urllib2,cookielib 模拟网页登录 import urllib ...

  7. 【小白学爬虫连载(10)】–如何用Python实现模拟登陆网站

    Python如何实现模拟登陆爬取Python实现模拟登陆的方式简单来说有三种:一.采用post请求提交表单的方式实现.二.利用浏览器登陆网站记录登陆成功后的cookies,采用get的请求方式,传入c ...

  8. Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

  9. python下selenium模拟浏览器基础操作

    1.安装及下载 selenium安装: pip install selenium  即可自动安装selenium geckodriver下载:https://github.com/mozilla/ge ...

  10. Python实现模拟登陆

    大家经常会用Python进行数据挖掘的说,但是有些网站是需要登陆才能看到内容的,那怎么用Python实现模拟登陆呢?其实网路上关于这方面的描述很多,不过前些日子遇到了一个需要cookie才能登陆的网站 ...

随机推荐

  1. Linux更新阿里源

    阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/ CentOS系统更换软件安装源: 第一步:备份你的原镜像文件,以免出错后可以恢复. mv /etc/yum.rep ...

  2. 8-Images

    HTML Image Tags Tag Description <img> Defines an image <map> Defines an image-map <ar ...

  3. 洛谷P4859 已经没有什么好害怕的了 [DP,容斥]

    传送门 思路 大佬都说这是套路题--嘤嘤嘤我又被吊打了\(Q\omega Q\) 显然,这题是要\(DP\)的. 首先思考一下性质: 为了方便,下面令\(k=\frac{n+k}{2}\),即有恰好\ ...

  4. Confluence 6 为外部用户管理获得支持

    本页面描述了如果你在配置外部用户管理的时候遇到了问题,如何向 Atlassian 支持项目组寻求帮助.外部用户目录挂你包括 Active Directory,其他 LDAP 服务器,Atlassian ...

  5. SpringBoot获取配置文件的自定义参数

    1.在application.properties中自定义参数 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datas ...

  6. 【supervisor】监控服务

    写了一个ftp服务,用supervisor监控一下 1.先写一个配置文件,路径和名称为/etc/supervisord.conf.d/ftp-server.ini [program:ftp-serve ...

  7. Visual Studio UML

    1 .类图设计 2.动态图设计,业务工作流程说明了业务为所想服务的业务助教提供了所需要的价值而必须完成的工作,业务用例由一系列的活动组成,它们共同为业务主角生成某些工件,工作流程通常包括一个基本的工作 ...

  8. 使用Calendar获取上一月,下一月,上一年,下一年的当天日期

    Calendar的add(int field,int amount)方法 field 表示月或年,天等字段 amount 代表增量或减量 例如: 上月的当天日期  Calendar cal = Cal ...

  9. 论文阅读笔记十八:ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation(CVPR2016)

    论文源址:https://arxiv.org/abs/1606.02147 tensorflow github: https://github.com/kwotsin/TensorFlow-ENet ...

  10. 论文阅读笔记一:Tutorial on Gabor Filters

    时域下的一维Gabor滤波器: 可以将Gabor滤波器看作是两个输出两个相位的滤波器,分别在实数域和虚数域上. 实数域上滤波器为: 虚数域上滤波器为: 傅里叶变换为频域: 上述两个滤波器对频率敏感,为 ...