前言:我对html /网络编程和抓取工作都很陌生。
为了好玩,我一直在玩Scrapy,并想尝试在线登录账户并刮掉梦幻足球比分。页面为http://www.espn.com/fantasy,页面来源及相关链接为:
<div class="panel panel-default">
<div class="panel-heading">
<div class="panel-title">
<ul class="list-inline">
<li class="col-xs-12">
<div class="pull-right">
<div class="row">
<div class="col-md-6 col-xs-6">
<p>Left side with col</p>
</div>
<div class="col-md-6 col-xs-6">
<p> Right side with col</p>
</div>
</div>
</div>
<div class="pull-left">
<div class="pull-left">Left side with pull</div>
<div class="pull-right">Right side with pull</div>
</div>
</li>
</ul>
</div>
</div>
<div class="panel-body">Content here..</div>
</div>
<hr>
点击这个调用一些Javascript(我认为)并生成一个看起来像这样的xhr请求(从查看firebug中的网络选项卡):
<a data-affiliatename="espn" data-language="en" data-regformid="espn_bbc" tref="/members/v3_1/login" data-behavior="overlay" data-route="false" href="#" class="med button-alt sign-in">Log In</a>
从firebug中的网络请求/响应中,我收集到这是调用api来启动登录覆盖,并且有许多参数,如conversation_id,correlation_id,timestamp等。
问题:
答案 0 :(得分:1)
对于#1:Scrapy自己管理cookie,除非cookie很复杂并且被javascript修改(这是非常不可能的)你不需要做任何事情。关于url参数是否是从你的cookie生成的也是不太可能的,这可能只是一个巧合,cookie和url参数都使用来自html源的一些<input>
数据。
关于#2:除了通过更改/删除它进行试验之外,无法知道url参数是必需的还是可选的。
您应该能够使用FormRequest.from_response(response, formdata=<your custom value dict>)
检索多数(如果不是全部)发布请求表单数据。 More about FormRequest on official docs