一、使用cookies登录网站

import scrapy

class LoginSpider(scrapy.Spider):
name = 'login'
allowed_domains = ['xxx.com']
start_urls = ['https://www.xxx.com/xx/'] cookies = "" def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(url, cookies=self.cookies, callback=self.parse) def parse(self, response):
with open("01login.html", "wb") as f:
f.write(response.body)

二、发送post请求登录, 要手动解析网页获取登录参数

import scrapy

class LoginSpider(scrapy.Spider):
name='login_code'
allowed_domains = ['xxx.com'] #1. 登录页面
start_urls = ['https://www.xxx.com/login/'] def parse(self, response):
#2. 代码登录
login_url='https://www.xxx.com/login' formdata={
"username":"xxx",
"pwd":"xxx",
"formhash":response.xpath("//input[@id='formhash']/@value").extract_first(),
"backurl":response.xpath("//input[@id='backurl']/@value").extract_first()
} #3. 发送登录请求post
yield scrapy.FormRequest(login_url, formdata=formdata, callback=self.parse_login) def parse_login(self, response):
#4.访问目标页面
member_url="https://www.xxx.com/member"
yield scrapy.Request(member_url, callback=self.parse_member) def parse_member(self, response):
with open("02login.html",'wb') as f:
f.write(response.body)

三、发送post请求登录, 自动解析网页获取登录参数

import scrapy

class LoginSpider(scrapy.Spider):
name='login_code2'
allowed_domains = ['xxx.com'] #1. 登录页面
start_urls = ['https://www.xxx.com/login/'] def parse(self, response):
#2. 代码登录
login_url='https://www.xxx.com/login' formdata={
"username":"xxx",
"pwd":"xxx"
} #3. 发送登录请求post
yield scrapy.FormRequest.from_response(
response,
formxpath="//*[@id='login_pc']",
formdata=formdata,
method="POST", #覆盖之前的get请求
callback=self.parse_login
) def parse_login(self, response):
#4.访问目标页面
member_url="https://www.xxx.com/member"
yield scrapy.Request(member_url, callback=self.parse_member) def parse_member(self, response):
with open("03login.html",'wb') as f:
f.write(response.body)

Scrapy框架: 登录网站的更多相关文章

  1. python网络爬虫之使用scrapy自动登录网站

    前面曾经介绍过requests实现自动登录的方法.这里介绍下使用scrapy如何实现自动登录.还是以csdn网站为例. Scrapy使用FormRequest来登录并递交数据给服务器.只是带有额外的f ...

  2. 第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies

    第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录 模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于star ...

  3. 十二 web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies

    模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于start_urls,start_requests()返回的请求会替代start_urls里 ...

  4. python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)

    操作环境:python3 在上一文中python爬虫scrapy框架--人工识别知乎登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前 ...

  5. 第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码

    第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码 打码接口文件 # -*- coding: cp936 -*- import sys import os ...

  6. Scrapy框架——CrawlSpider爬取某招聘信息网站

    CrawlSpider Scrapy框架中分两类爬虫,Spider类和CrawlSpider类. 它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页, 而Craw ...

  7. 使用scrapy框架模拟登录

    scrapy模拟登录 注意:模拟登陆时,必须保证settings.py里的COOKIES_ENABLED(Cookies中间件) 处于开启状态 COOKIES_ENABLED = True 或# CO ...

  8. scrapy框架爬取糗妹妹网站妹子图分类的所有图片

    爬取所有图片,一个页面的图片建一个文件夹.难点,图片中有不少.gif图片,需要重写下载规则, 创建scrapy项目 scrapy startproject qiumeimei 创建爬虫应用 cd qi ...

  9. 一个scrapy框架的爬虫(爬取京东图书)

    我们的这个爬虫设计来爬取京东图书(jd.com). scrapy框架相信大家比较了解了.里面有很多复杂的机制,超出本文的范围. 1.爬虫spider tips: 1.xpath的语法比较坑,但是你可以 ...

随机推荐

  1. MYSQL 使用存储过程批量更新表数据

    功能:实现将表result_good_city_dzl中的字段lat更新为表 result_good_city_lh中的lat,条件是两个表中的id一样 即: update result_good_c ...

  2. asp.net dev xtraReporting(一)静态页面

    新建一个空web应用程序 添加一个default.aspx 添加新建项 建一个空report 写点数据 defalut.aspx中拖拽一个aspxDocumentView 预览可以实现展示了

  3. 如何通过HTTP API 调取tushare的股票数据

    长久以来,Tushare一直以固定的Python SDK方式为大家提供数据服务. 虽然在基于Python的数据分析和Python的量化策略开发很方便,但习惯用其他语言的同学们表示了“抗议”,于是在Tu ...

  4. HDU 2815 Mod Tree (扩展 Baby Step Giant Step )

    Mod Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  5. 解决“每次打开office2010的word都会出现配置进度框”问题

       在win7中安装完office2010后.打开 *.doc文件时,总会弹出"配置进度框"问题,解决例如以下:  1)点击"開始"-->"执 ...

  6. mysql百万级别重排主键id(网上的删除重建id在大数据量下会出错)

    网上教程: 先删除旧的主键 再新建主键 :数据量少时没问题,不会出现主键自增空缺间隔的情况(如:1,2,3,5):但是大数据量时会出现如上所述问题(可能是内部mysql多进程或多线程同时操作引起问题) ...

  7. jQuery HTML- 添加元素

    添加内容 html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> & ...

  8. json书写格式

    1.数组方式 [ ] [{ "id" : 1 , "name" : "xiaoming" },{ "id" : 2 , ...

  9. sql对表的操作

    --insert into pppcopy select * from ppp //从表ppp中获取数据,并将其插入到pppcopy中,只拷贝表的数据,不拷贝表的结构(前提:表pppcopy1存在) ...

  10. Django框架的学习

    目前 Django 1.6.x 以上版本已经完全兼容 Python 3.x. 1. 指定django版本的安装 pip install django =1.11