Scrapy中的start_urls

时间:2015-02-09 12:41:25

标签: python scrapy

我正在尝试从此网站获取一些信息:http://www.go-on.fi/tyopaikat。 正如您所看到的,该表具有分页功能,因此每当您单击第二页或第三页时,链接也会发生变化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)

所以我的问题是,如何让蜘蛛浏览网站的每一页(我的意思是表格页面)?

1 个答案:

答案 0 :(得分:1)

你可以做的是将start_urls设置为主页面,然后根据页脚分页中显示的页面数量(在本例中为3),使用循环为每个页面创建一个yield请求:

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)