簡體   English   中英

使用BaseSpider編寫搜尋器以輕松解析網站

[英]Writing a crawler to parse a site in scrapy using BaseSpider

我對如何設計爬蟲的結構感到困惑。

我在哪里搜尋

  1. 分頁:跟隨下一頁鏈接
  2. 一頁上的產品列表
  3. 要抓取以獲得說明的各個鏈接

我有以下代碼:

def parse_page(self, response):
    hxs = HtmlXPathSelector(response)
    sites = hxs.select('//ol[@id=\'result-set\']/li')
    items = []
    for site in sites[:2]:

        item = MyProduct()
        item['product'] = myfilter(site.select('h2/a').select("string()").extract())
        item['product_link'] = myfilter(site.select('dd[2]/').select("string()").extract())
        if  item['profile_link']:
                      request =  Request(urljoin('http://www.example.com', item['product_link']),
                      callback = self.parseItemDescription)

        request.meta['item'] = item
        return request

    soup = BeautifulSoup(response.body)
    mylinks= soup.find_all("a", text="Next")
    nextlink = mylinks[0].get('href')
    yield Request(urljoin(response.url, nextlink), callback=self.parse_page)

問題是我有兩個return語句:一個用於request ,一個用於yield

在抓取蜘蛛中,我不需要使用最后一個yield ,因此一切都很好,但是在BaseSpider我必須手動跟蹤鏈接。

我該怎么辦?

作為初始階段(並根據您對自己想做的評論),我建議您看一下CrawlSpider代碼 ,以了解如何實現其功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM