#!/usr/bin/env python
# -*- coding: utf-8 -*-
# import ConfigParser import datetime
import sys
import requests
from requests.cookies import RequestsCookieJar
from bs4 import BeautifulSoup
import log_config
import time
import random
import re def is_form_hash(tag):
return tag.has_attr('name') and tag.get('name') == 'formhash' def is_refer(tag):
return tag.has_attr('name') and tag.get('name') == 'referer' class haifeng_crawler: def __init__(self, user_name, pass_word):
self.cookies = dict()
self.username = user_name
self.password = pass_word
self.session = requests.session() def update_cookies(self, new_cookies):
for key in new_cookies:
self.cookies[key] = new_cookies[key] def req_get(self, url):
requests.session().cookies = requests.utils.cookiejar_from_dict(self.cookies)
resp = self.session.get(url)
self.update_cookies(requests.utils.dict_from_cookiejar(resp.cookies))
print(self.cookies)
return resp def req_post(self, url, data):
requests.session().cookies = requests.utils.cookiejar_from_dict(self.cookies)
resp = self.session.post(url, data)
self.update_cookies(requests.utils.dict_from_cookiejar(resp.cookies))
#print(self.cookies)
return resp def login(self):
url = 'http://www.96bbs.com/member.php?mod=logging&action=login&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login'
page_res = self.req_get(url)
#print(page_res.text)
soup = BeautifulSoup(page_res.text, "html.parser")
rt = soup.find('root')
if rt:
rt = rt.text
soup = BeautifulSoup(rt, "html.parser")
else:
return None;
#print(rt);
bb = is_form_hash
cc = is_refer
formhash = soup.find(bb).get("value")
referer = soup.find(cc).get("value")
print(formhash)
print(referer)
url = 'http://www.96bbs.com/member.php?mod=logging&action=login&loginsubmit=yes&handlekey=login&loginhash=LVCbx&inajax=1'
data = {
'formhash': formhash,
'referer': referer,
'username': self.username,
'password': '加密后的密码',
'questionid': 0,
'answer': ''
}
resp = self.req_post(url,data)
soup = BeautifulSoup(resp.text, "html.parser")
rt = soup.find('root').text
print(rt) def visit_home(self):
url = 'http://www.96bbs.com/forum.php'
self.req_get(url) def visit_attachment(self,url):
resp = self.req_get(url)
print(resp.status_code)
print(resp.text)
return resp if __name__ == "__main__": haifeng = haifeng_crawler("你的用户名","密码需要根据页面取获取加密后的密码")
haifeng.login()
haifeng.visit_attachment("http://www.96bbs.com/forum.php?mod=attachment&aid=MjI0NzQ5OHw3YjNkMWMwY3wxNTQwMzYxMzEwfDQ5NzM5OXwzNTM5NTgy")

python 爬虫登录保存会话去获取只有登录能获取的数据的更多相关文章

  1. Python爬虫学习:四、headers和data的获取

    之前在学习爬虫时,偶尔会遇到一些问题是有些网站需要登录后才能爬取内容,有的网站会识别是否是由浏览器发出的请求. 一.headers的获取 就以博客园的首页为例:http://www.cnblogs.c ...

  2. Python爬虫实战——反爬策略之模拟登录【CSDN】

    在<Python爬虫实战-- Request对象之header伪装策略>中,我们就已经讲到:=="在header当中,我们经常会添加两个参数--cookie 和 User-Age ...

  3. Python爬虫入门(基础实战)—— 模拟登录知乎

    模拟登录知乎 这几天在研究模拟登录, 以知乎 - 与世界分享你的知识.经验和见解为例.实现过程遇到不少疑问,借鉴了知乎xchaoinfo的代码,万分感激! 知乎登录分为邮箱登录和手机登录两种方式,通过 ...

  4. python爬虫12 | 爸爸,他使坏,用动态的 Json 数据,我要怎么搞?

    在前面我们玩了好多静态的 HTML 想必你应该知道怎么去爬这些数据了 但还有一些常见的动态数据 比如 商品的评论数据 实时的直播弹幕 岛国动作片的评分 等等 这些数据是会经常发生改变的 很多网站就会用 ...

  5. 附: Python爬虫 数据库保存数据

    原文 1.笔记 #-*- codeing = utf-8 -*- #@Time : 2020/7/15 22:49 #@Author : HUGBOY #@File : hello_sqlite3.p ...

  6. python爬虫笔记之用cookie访问需要登录的网站

     目标:用cookie访问一个需要登录的网站 如图,直接访问会跳转到登录页面,提示登录. 运行结果: 直接在浏览器上输入该url,网站立马跳转到登录页面.  方法: 1.先手动登录,通过抓包获取coo ...

  7. python 爬虫newspaper3k 新闻爬去方法 利用第三方库

    from newspaper import Article url = '你想要爬取的网站url' news = Article(url, language='zh') news .download( ...

  8. Python爬虫实战(一) 使用urllib库爬取拉勾网数据

    本笔记写于2020年2月4日.Python版本为3.7.4,编辑器是VS code 主要参考资料有: B站视频av44518113 Python官方文档 PS:如果笔记中有任何错误,欢迎在评论中指出, ...

  9. Python爬虫+可视化教学:爬取分析宠物猫咪交易数据

    前言 各位,七夕快到了,想好要送什么礼物了吗? 昨天有朋友私信我,问我能用Python分析下网上小猫咪的数据,是想要送一只给女朋友,当做礼物. Python从零基础入门到实战系统教程.源码.视频 网上 ...

随机推荐

  1. github上的版本发布

    当前的版本号 发布版本 比如 git tag -a v1. 把这个版本发布到线上 git push --tags

  2. Java-从堆栈常量池解析equals()与==

    一.基本概念 ①JAVA中的基本数据类型(简单类型,内置类型): 字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),浮点型(float),双精度型(do ...

  3. activity与service进程内通信

    package com.example.binbin.testbinder; import android.app.Service; import android.content.Intent; im ...

  4. EXPLAIN sql优化方法(2) Using temporary ; Using filesort

    优化GROUP BY语句   默认情况下,MySQL对所有GROUP BY col1,col2...的字段进行排序.这与在查询中指定ORDER BY col1,col2...类似.因此,如果显式包括一 ...

  5. rocketmq刷盘过程

     本文基于rocketmq4.0版本,结合CommitlLog的刷盘过程,对消息队列的刷盘过程源码进行分析,进而对RocketMQ的刷盘原理和过程进行了解.   rocketmq 4.0版本中刷盘类型 ...

  6. 75. Sort Colors (Array)

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...

  7. Hibernate中Session与本地线程绑定

    ------------------siwuxie095 Hibernate 中 Session 与本地线程绑定 1.Session 类似于 JDBC 的连接 Connection 2.Session ...

  8. Hibernate事务代码规范写法

    ----------------siwuxie095 事务相关概念 1.什么是事务 逻辑上的一组操作,构成这组操作的各个单元,要么一起成功, 要么一起失败 2.事务的四个特性 1)原子性 2)一致性 ...

  9. securecrt免密码登录

    一.前言 1. 环境 客户端系统:win7 securecrt版本:6.0.2 服务端系统:centos6.5 服务端ssh实现:openssh 2. 关于认证方式 我们知道ssh一般都会提供多种客户 ...

  10. CentOS 6.5 下安装 Sun JDK 1.7

    下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 得到 jdk-7u51-l ...