scrapy模拟用户登录
scrapy框架编写模拟用户登录的三种方式:
方式一:携带cookie登录,携带cookie一般请求的url为登录后的页面,获取cookie信息应在登录后的页面获取,cookie参数应转成字典形式
# -*- coding: utf- -*-
import re
import scrapy class RenrenSpider(scrapy.Spider):
name = 'renren'
allowed_domains = ['renren.com']
start_urls = ['http://www.renren.com/966403607/profile']
#要对star_urls进行请求,则要重写start_requests
def start_requests(self): cookies = 'anonymid=joz9buh7-q7cfyi; depovince=GUZ; _r01_=1; _de=A10BB6D966D15FBA1F90E79AB0D2FDF8; ln_uact=18520877258; ln_hurl=http://head.xiaonei.com/photos/0/0/men_main.gif; jebe_key=b605eb90-21b9-4072-9d48-b75b233c1cea%7Cb156ee0bfd56183e1b8eb9e5994eb5ef%7C1543293909743%7C1%7C1543293910671; jebecookies=9700aefc-77a1-49a7-8d74-882aa173e271|||||; JSESSIONID=abcxtZqTI1hOu4WzN0tDw; ick_login=21361cc0-986f-49bc-95f9-de3a9ed54a69; p=29e3cce85947859ee0e1d6264160539f7; first_login_flag=1; t=b6e6ac604c66019acf93cb471550349e7; societyguester=b6e6ac604c66019acf93cb471550349e7; id=966403607; xnsid=ac2d6a1a; loginfrom=syshome; wp_fold=0'
# 将cookies分割成字典形式
cookies = {
i.split("=")[]:i.split("=")[] for i in cookies.split("; ")
}
# 回调中携带cookies的值
yield scrapy.Request(
self.start_urls[],
cookies=cookies,
callback=self.parse, )
def parse(self, response):
item = {}
name = re.findall("尚学堂",response.body.decode())
item["name"] = name
yield item
为了可以知道cookie确实是在不同的解析函数中传递在setting中设置一个参数如下
# 该设置可以知道cookie确实是在不同的解析函数中传递
COOKIES_DEBUG=True
方式二:表单dataform的post请求,
# -*- coding: utf- -*-
import re
import scrapy class GithubSpider(scrapy.Spider):
name = 'github'
allowed_domains = ['github.com']
start_urls = ['https://github.com/login'] def parse(self, response):
authenticity_token = response.xpath('//input[@name="authenticity_token"]/@value').extract_first()
# form表单提交post
formdata = {
"commit": "Sign in",
"utf8": "✓",
"authenticity_token": authenticity_token,
"login": "sxtpython",
"password": "sxt123456"
}
yield scrapy.FormRequest(
# 回调提交表单跳转后的url地址
'https://github.com/session',
formdata=formdata,
callback=self.parse_item,
) def parse_item(self,response):
item = {}
item["name"] = re.findall('sxtpython',response.body.decode())
yield item
方式三:自动从f响应中找到form表单进行登录
# -*- coding: utf- -*-
import re
import scrapy # 方式三
class Github2Spider(scrapy.Spider):
name = 'github2'
allowed_domains = ['github.com']
start_urls = ['https://github.com/login'] def parse(self, response): yield scrapy.FormRequest.from_response(
response,#自动从该响应中获取form表单
formdata={
'login':'sxtpython',
'password':'sxt123456'
},
callback=self.parse_item,
)
def parse_item(self,response):
item = {}
item["name"] = re.findall('sxtpython',response.body.decode())
yield item
scrapy模拟用户登录的更多相关文章
- python用scrapy模拟用户登录
scrapy模拟登录 关注公众号"轻松学编程"了解更多. 注意:模拟登陆时,必须保证settings.py里的COOKIES_ENABLED(Cookies中间件) 处于开启状态 ...
- 第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies
第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录 模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于star ...
- 运用String类实现一个模拟用户登录程序
package Test; import java.util.Scanner; // 模拟用户登录程序 // 思路: // 1.用两个String类分别接收用户名和密码 // 2.判断输入的用户名和密 ...
- java.net.URL 模拟用户登录网页并维持session
java.net.URL 模拟用户登录网页并维持session 半成品,并非完全有用 import java.io.BufferedReader; import java.io.InputStream ...
- python 初学习 模拟用户登录
#!/usr/bin/env python#coding:utf-8''' 2017年8月19日 模拟用户登录,userfile 文件保存字典 用户名,和密码 sorryname 文件保存字典 登录过 ...
- python3.0 模拟用户登录,三次错误锁定
# -*- coding:utf-8 -*- #需求模拟用户登录,超过三次错误锁定不允许登陆 count = 0 #realname passwd Real_Username = &quo ...
- xpath技术解析xml以及案例模拟用户登录效果
问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!! xpath就在此情况下产生了--主要是用于快速获取所需的[节点对象]. 在dom4j中如何使用xPath技术 1) ...
- jdbc封装模拟用户登录
dao层 接口 package com.qu.dao; public interface ILoginDAO { /** * 模拟用户登录 * 验证用户名 密码是否正确 * select * from ...
- java.net.URL 模拟用户登录网页并维持session【转】
java.net.URL 模拟用户登录网页并维持session 半成品,并非完全有用 import java.io.BufferedReader; import java.io.InputStream ...
随机推荐
- mybatis 插入一条记录 参数为map的写法
xml: <insert id="insertUser" parameterType="java.util.Map"> insert into us ...
- io系列之常用流二
一.对象的序列化.持久化. 将java的对象的基本数据类型和图形存入文件中,实现对象数据的序列化和持久化. 操作对象可以使用: ObjectOutPutStream 和 ObjectInPutStre ...
- ElasticSearch6.5.0 【安装IK分词器】
不得不夸奖一下ES的周边资源,比如这个IK分词器,紧跟ES的版本,卢本伟牛逼!另外ES更新太快了吧,几乎不到半个月一个小版本就发布了!!目前已经发了6.5.2,估计我还没怎么玩就到7.0了. 下载 分 ...
- ajax多表单序列化
今天在修一个后台接收参数为空值的bug 找了好久才发现原来是form表单合拼参数的时候把参数给搞没了 (我也不知道为什么啊—_—!) //对表单进行Json对象序列化 (function($){ $. ...
- 根据指定的key,将二维数组的value转换为string,适用于mysql的in查询
function array_unique_join($arr,$param){ $utm_source_arr = array_unique(array_column($arr,$param)); ...
- 2018ccpc秦皇岛站后记
总的来说这不是一场体验十分好的比赛. 定的宾馆有一点小,学校提供的伙食人太多了,不想排队,饭票又不能换香蕉,就没有吃. 到的第一天遇到了价格向上取整和到站不打发票的两个黑车司机,让我对这个地点好感大减 ...
- REST_返回形式
摘录: "Web resources" were first defined on the World Wide Web as documents or files identif ...
- ResourceBundle读取properties配置文件
package cn.rocker.readProperties; import java.util.ResourceBundle; import org.junit.Test; /** * @Cla ...
- (转)windows 下安装配置 Nginx 详解
windows 下安装配置 Nginx 详解 本文转自https://blog.csdn.net/kingscoming/article/details/79042874 nginx功能之一可以启动一 ...
- ORM常用字段和参数
目录: ORM常用字段和参数