start_urls 在 Scrapy 中
start_urls in Scrapy
我正在尝试从该网站获取一些信息:http://www.go-on.fi/tyopaikat。
正如你所看到的,table 有一个分页,所以每当你点击第二页或第三页时,link 也会改变一些东西 http://www.go-on.fi/tyopaikat?start=20(最后是 "start=" ).
这是我的蜘蛛代码:
allowed_domains = ["go-on.fi"]
start_urls = ["http://www.go-on.fi/tyopaikat?start=0"]
def parse(self, response):
hxs = HtmlXPathSelector(response)
items = []
titles = hxs.select("//tr")
for row in titles:
item = JobData()
item['header'] = row.select("./td[1]/a/text()").extract()
item['link'] = row.select("./td[1]/a/@href").extract()
items.append(item)
所以我的问题是,如何让蜘蛛浏览网站的每一页(我指的是 table 页面)?
你可以做的是将 start_urls 设置为主页,然后根据页脚分页中显示的页数(在本例中为 3),使用循环为每个页创建一个 yield Request页数:
allowed_domains = ["go-on.fi"]
start_urls = ["http://www.go-on.fi/tyopaikat"]
def parse(self, response):
pages = response.xpath('//ul[@class="pagination"][last()-1]/a/text()').extract()
page = 1
start = 0
while page <= pages:
url = "http://www.go-on.fi/tyopaikat?start="+str(start)
start += 20
page += 1
yield Request(url, callback=self.parse_page)
def parse_page(self,response):
hxs = HtmlXPathSelector(response)
items = []
titles = hxs.select("//tr")
for row in titles:
item = JobData()
item['header'] = row.select("./td[1]/a/text()").extract()
item['link'] = row.select("./td[1]/a/@href").extract()
items.append(item)
我正在尝试从该网站获取一些信息:http://www.go-on.fi/tyopaikat。 正如你所看到的,table 有一个分页,所以每当你点击第二页或第三页时,link 也会改变一些东西 http://www.go-on.fi/tyopaikat?start=20(最后是 "start=" ). 这是我的蜘蛛代码:
allowed_domains = ["go-on.fi"]
start_urls = ["http://www.go-on.fi/tyopaikat?start=0"]
def parse(self, response):
hxs = HtmlXPathSelector(response)
items = []
titles = hxs.select("//tr")
for row in titles:
item = JobData()
item['header'] = row.select("./td[1]/a/text()").extract()
item['link'] = row.select("./td[1]/a/@href").extract()
items.append(item)
所以我的问题是,如何让蜘蛛浏览网站的每一页(我指的是 table 页面)?
你可以做的是将 start_urls 设置为主页,然后根据页脚分页中显示的页数(在本例中为 3),使用循环为每个页创建一个 yield Request页数:
allowed_domains = ["go-on.fi"]
start_urls = ["http://www.go-on.fi/tyopaikat"]
def parse(self, response):
pages = response.xpath('//ul[@class="pagination"][last()-1]/a/text()').extract()
page = 1
start = 0
while page <= pages:
url = "http://www.go-on.fi/tyopaikat?start="+str(start)
start += 20
page += 1
yield Request(url, callback=self.parse_page)
def parse_page(self,response):
hxs = HtmlXPathSelector(response)
items = []
titles = hxs.select("//tr")
for row in titles:
item = JobData()
item['header'] = row.select("./td[1]/a/text()").extract()
item['link'] = row.select("./td[1]/a/@href").extract()
items.append(item)