使用一些其他的库,例如Requests,urllib等都会涉及到模拟登陆的问题。在这里贴出scrapy框架官方给出的代码,以供学习。
import scrapy # 引入scrapy框架
class LoginSpider(scrapy.Spider):
name = 'example.com'
start_urls = ['http://www.example.com/users/login.php']
def parse(self, response):
return scrapy.FormRequest.from_response(
response,
formdata={'username': 'john', 'password': 'secret'},
# 构建用户名和密码的字典数据formdata
callback=self.after_login
# 设置回调函数
)
def after_login(self, response):
# check login succeed before going on
if "authentication failed" in response.body:
# 如果登录失败,则在日志中以ERROR的形式提醒
self.log("Login failed", level=scrapy.log.ERROR)
return
# continue scraping with authenticated session...
# 进行下一步操作
仅供参考学习。重点是先构建用户名和密码的formdata字典数据,然后使用FormRequest来请求。