如何使用scrapy在Request上指定参数

时间:2015-11-17 00:32:58

标签: python web-crawler scrapy scrapy-spider

如何将参数传递给网址上的请求,如下所示:

req = Request(url="site.com/",parameters={x=1,y=2,z=3})

如何将参数放在Spider Request的结构上,如下例所示:

$(".expand").on( "click", function() {
    $(this).closest('.canvas').find('.detail').slideToggle(100);
    //$expand = $(".marginize").find(">:first-child");
});

5 个答案:

答案 0 :(得分:6)

将您的GET参数传递到URL本身:

return Request(url="https://yoursite.com/search/?action=search&description=MySearchhere&e_author=")

您应该在字典中定义参数,然后"urlencode"

from urllib import urlencode

params = { 
    "action": "search",
    "description": "My search here",
    "e_author": ""
}
url = "https://yoursite.com/search/?" + urlencode(params)

return Request(url=url)

答案 1 :(得分:2)

要使用scrapy创建带有参数的GET请求,可以使用以下示例:

CountryList$Country

其中“ params”是带有您参数的字典。

答案 2 :(得分:0)

Scrapy不直接提供此功能。您要做的是创建一个URL,您可以使用urlparse模块

答案 3 :(得分:0)

您必须使用任何参数自行设置url。

Python 3或更高版本

ViewModel

Python 3+示例
在这里,我尝试使用官方的youtube API获取某些youtube视频的所有评论。评论将采用分页格式。因此,请参阅我如何从params构造url来调用它。

import urllib
params = {
    'key': self.access_key,
    'part': 'snippet,replies',
    'videoId': self.video_id,
    'maxResults': 100
}
url = f'https://www.googleapis.com/youtube/v3/commentThreads/?{urllib.parse.urlencode(params)}'
request = scrapy.Request(url, callback=self.parse)
yield request

答案 4 :(得分:0)

可以使用w3lib中的add_or_replace_parameters。

<item name="android:navigationBarColor">@android:color/white</item>