大家好!
我目前正在使用Python 2.7开发Scrapy Webcrawler,虽然我知道C语言和Web语言,但我对Python和Scrapy库有点迷失。
我希望抓取一个返回JSON数据的URL,并根据预定义的参数表更改URL中的参数。
网址如下所示:
http://www.helloworld.com/data?From= XXX &安培;为了= YYY &安培;数= 42
在这里,我想从存储在不同文件中的一组数据中替换所有xxx,yyy,42,并使用每个参数循环爬虫。
我知道我能做到:
def __init__(self, fromdat='xxx', todat='yyy'):
self.start_urls = ["http://helloworld.com/data?From=%s&To=%s/" % (fromdat, todat)]
然后在命令行中使用-a命令指定参数,但这将涉及人工干预,我不希望这样做。
我也尝试过:
class QuotesSpider(scrapy.Spider):
name = "histo"
tab1=[1000,10]
def start_requests(self, tab1):
for i in tab1:
urls = 'http://www.helloworld.com/data?number=%d'% i
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = 'histo-%s.html' % page
with open(filename, 'wb') as f:
f.write(response.body)
self.log('Saved file %s' % filename)
但是,这似乎也没有......
我有点失落所以欢迎任何帮助! :)
非常感谢,祝你有个美好的一天!
答案 0 :(得分:1)
start_requests()
不接受任何其他参数,请执行以下操作:
class QuotesSpider(scrapy.Spider):
name = "histo"
tab1 = [1000,10]
def start_requests(self):
for i in self.tab1:
urls = 'http://www.helloworld.com/data?number=%d' % i
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = 'histo-%s.html' % page
with open(filename, 'wb') as f:
f.write(response.body)
self.log('Saved file %s' % filename)
注意parse()
是如何缩进的。