如何使用scrapy抓取内部级别的url?

时间:2019-04-14 12:55:51

标签: python scrapy

我制作了一只抓痒的蜘蛛,观看了一些在线视频。它从网站上抓取个人资料网址。我想将此范围扩展到从每个抓取的个人资料网址中抓取数据,例如地址,名称,电话,网站网址。

我当时正在考虑将刮板分开。一种用于抓取个人资料网址。第二个是从被抓取的第一个URL抓取数据。

还有其他解决方法吗?

这是我的蜘蛛,它抓取个人资料网址。

# -*- coding: utf-8 -*-
import scrapy
from ..items import ...scraperItem

class SpiderSpider(scrapy.Spider):
    name = 'spider'
    start_urls = ['https:// ...']
    page_number = 15

    def parse(self, response):
        items=...scraperItem()
       ..._url=response.css('a.header-5.text-unbold ::attr(href)').extract_first()

        items['..._url']= ..._url
        yield items
        next_page = 'https:/...'+str(...SpiderSpider.page_number)
        if ...SpiderSpider.page_number <= 150:
            ...SpiderSpider.page_number += 15
            yield response.follow(next_page, callback = self.parse)

1 个答案:

答案 0 :(得分:0)

您可以添加另一个解析方法(例如parse_profile)来抓取其他数据。例如

def parse(self, response):
    url = response.css('a.header-5.text-unbold ::attr(href)').extract_first()

    yield response.follow(url, callback=self.parse_profile)

    # next_page = ...
    if self.page_number <= 150:
        self.page_number += 15
        yield response.follow(next_page, callback=self.parse)

def parse_profile(self, response)
    item = HouzzscraperItem()
    item['houzz_url'] = response.url
    # item['address'] = ...
    # item['name'] = ...
    # item['phone'] = ...
    yield item