我正在尝试使用Scrapy Spider解决问题(来自HackThisSite的编程问题):
(1)我必须登录一个网站,输入用户名和密码(已经完成)
(2)之后,我必须使用给定的URL访问图像(该图像只能由登录的用户访问)
(3)然后,无需将图像保存在硬盘中,我必须在一种缓冲区中读取其信息
(4)函数的结果将填写表格并将数据发送到网站服务器(我已经知道如何执行此步骤)
因此,我可以继续提问:是否有可能(使用蜘蛛网)读取仅登录用户可以访问的图像并以蜘蛛网代码进行处理?
我试图研究不同的方法,使用项目管道不是一个好方法(我不想下载文件)。
我已经拥有的代码是:
class ProgrammingQuestion2(Spider):
name = 'p2'
start_urls = ['https://www.hackthissite.org/']
def parse(self, response):
formdata_hts = {'username': <MY_USER_NAME>,
'password': <MY_PASSWORD>,
'btn_submit': 'Login'}
return FormRequest.from_response(response,
formdata=formdata_hts, callback=self.redirect_to_page)
def redirect_to_page(self, response):
yield Request(url='https://www.hackthissite.org/missions/prog/2/',
callback=self.solve_question_2)
def solve_question_2(self, response):
open_in_browser(response)
img_url = 'https://www.hackthissite.org/missions/prog/2/PNG'
# What can I do here?
我希望使用Scrapy函数解决此问题,否则有必要再次登录网站(发送表单数据)。
答案 0 :(得分:1)
您可以提出抓取请求以抓取图像,然后回调到其他端点:
def parse_page(self, response):
img_url = 'https://www.hackthissite.org/missions/prog/2/PNG'
yield Request(img_url, callback=self.parse_image)
def parse_image(self, response):
image_bytes = response.body
form_data = form_from_image(image_bytes)
# make form request