我想使用剪贴板从多个数据中获取数据。起始网址是
https://gold.jgi.doe.gov/projects?page=1&Project.Project+Name=man&count=25
而且我不知道如何一次性添加1到url属性" page"。
我已尝试将所有网址添加到变量" start_urls",代码如下:
from scrapy.spiders import Spider,Request
from scrapy.selector import Selector
from dirbot.items import GenDis
class GDSpider(Spider):
name = "GenDis"
allowed_domains = ["gold.jgi.doe.gov"]
item = []
for i in range(1,10):
url = "https://gold.jgi.doe.gov/projects?page="+str(i)+"&Project.Project+Name=man&count=25"
item.append(url)
start_urls = item
print start_urls
def parse(self, response):
sel = Selector(response)
sites = sel.xpath('//tr[@class="odd"]|//tr[@class="even"]')
items = []
for site in sites:
item = GenDis()
item['Id'] = site.xpath('td/a/text()').extract()
item['Link'] = site.xpath('td/a/@href').extract()
item['Name'] = map(unicode.strip, site.xpath('td[2]/text()').extract())
item['Status'] = map(unicode.strip, site.xpath('td[3]/text()').extract())
item['Add_Date'] = map(unicode.strip, site.xpath('td[4]/text()').extract())
items.append(item)
return items
但有一个问题是我只能从每个页面获取一个数据,但每页有25个数据。 所以任何人都可以告诉我问题是什么,或告诉我如何每次添加1到基本网址。 非常感谢。
答案 0 :(得分:2)
尝试使用yield items
代替return items
。返回结束你的for循环,但yield是一个生成器,并允许for循环继续。
同时删除for循环中对items
的引用,只删除yield item
,否则items
对象将会多次出现,其中包含不断增加的重复项目列表。