Scrapy中的模拟登陆
1.携带cookie登陆人人网
比如我们要登陆我们的人人网站,想获取我们的自己的用户名,只有自己登陆进去才可以显示出我们的用户名:死性不改
因此我们需要现在浏览器端登陆进去,然后获取到自己的cookie,然后开始写scrapy爬虫
import scrapy
import re
class RenrenSpider(scrapy.Spider):
name = 'renren'
allowed_domains = ['']
def start_requests(self):
url = 'http://www.renren.com/9090xxxxxx'
cookies = '字符串',
cookies = {
i.split("=")[0]: i.split("=")[1] for i in cookies.split('; ')}
yield scrapy.Request(url, callback=self.parse,cookies=cookies)
def parse(self, response):
print(re.findall('死性不改', response.body.decode()))
运行爬虫
2.使用session对github进行模拟登陆
访问页面
一个输入账户一个输入密码,两个框分别对应的name
写爬虫代码
import scrapy
import re
class GithubSpider(scrapy.Spider):
name = 'github'
allowed_domains = []
start_urls = ['https://github.com/login']
def parse(self, response):
yield scrapy.FormRequest.from_response(
response,
formdata={
"login": '账号', 'password': '密码'},
callback=self.after_login
)
def after_login(self, response):
# 当登陆进来,会显示登陆后的信息,这里的信息为qinfan0412
print(re.findall('qinfan0412', response.body.decode()))
注意:scrapy.FormRequest.from_response
- FormRequest是post提交表单的方法
- from_response方法可以自动寻找表单中填写完要跳转的位置action,当一个页面有多个表单,如何寻找是哪个表单呢?进入源码,可以通过以下属性确定是哪个表单
- 使用FormRequest.from_response方法的好处是可以自动寻找提交的页面