Scrapy框架: 登录网站
一、使用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框架: 登录网站的更多相关文章
- python网络爬虫之使用scrapy自动登录网站
前面曾经介绍过requests实现自动登录的方法.这里介绍下使用scrapy如何实现自动登录.还是以csdn网站为例. Scrapy使用FormRequest来登录并递交数据给服务器.只是带有额外的f ...
- 第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies
第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录 模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于star ...
- 十二 web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies
模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于start_urls,start_requests()返回的请求会替代start_urls里 ...
- python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)
操作环境:python3 在上一文中python爬虫scrapy框架--人工识别知乎登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前 ...
- 第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码 打码接口文件 # -*- coding: cp936 -*- import sys import os ...
- Scrapy框架——CrawlSpider爬取某招聘信息网站
CrawlSpider Scrapy框架中分两类爬虫,Spider类和CrawlSpider类. 它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页, 而Craw ...
- 使用scrapy框架模拟登录
scrapy模拟登录 注意:模拟登陆时,必须保证settings.py里的COOKIES_ENABLED(Cookies中间件) 处于开启状态 COOKIES_ENABLED = True 或# CO ...
- scrapy框架爬取糗妹妹网站妹子图分类的所有图片
爬取所有图片,一个页面的图片建一个文件夹.难点,图片中有不少.gif图片,需要重写下载规则, 创建scrapy项目 scrapy startproject qiumeimei 创建爬虫应用 cd qi ...
- 一个scrapy框架的爬虫(爬取京东图书)
我们的这个爬虫设计来爬取京东图书(jd.com). scrapy框架相信大家比较了解了.里面有很多复杂的机制,超出本文的范围. 1.爬虫spider tips: 1.xpath的语法比较坑,但是你可以 ...
随机推荐
- MYSQL 使用存储过程批量更新表数据
功能:实现将表result_good_city_dzl中的字段lat更新为表 result_good_city_lh中的lat,条件是两个表中的id一样 即: update result_good_c ...
- asp.net dev xtraReporting(一)静态页面
新建一个空web应用程序 添加一个default.aspx 添加新建项 建一个空report 写点数据 defalut.aspx中拖拽一个aspxDocumentView 预览可以实现展示了
- 如何通过HTTP API 调取tushare的股票数据
长久以来,Tushare一直以固定的Python SDK方式为大家提供数据服务. 虽然在基于Python的数据分析和Python的量化策略开发很方便,但习惯用其他语言的同学们表示了“抗议”,于是在Tu ...
- 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 ...
- 解决“每次打开office2010的word都会出现配置进度框”问题
在win7中安装完office2010后.打开 *.doc文件时,总会弹出"配置进度框"问题,解决例如以下: 1)点击"開始"-->"执 ...
- mysql百万级别重排主键id(网上的删除重建id在大数据量下会出错)
网上教程: 先删除旧的主键 再新建主键 :数据量少时没问题,不会出现主键自增空缺间隔的情况(如:1,2,3,5):但是大数据量时会出现如上所述问题(可能是内部mysql多进程或多线程同时操作引起问题) ...
- jQuery HTML- 添加元素
添加内容 html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> & ...
- json书写格式
1.数组方式 [ ] [{ "id" : 1 , "name" : "xiaoming" },{ "id" : 2 , ...
- sql对表的操作
--insert into pppcopy select * from ppp //从表ppp中获取数据,并将其插入到pppcopy中,只拷贝表的数据,不拷贝表的结构(前提:表pppcopy1存在) ...
- Django框架的学习
目前 Django 1.6.x 以上版本已经完全兼容 Python 3.x. 1. 指定django版本的安装 pip install django =1.11