scrapy很新穎,請耐心等待。Scrapy - 抓取多個物品
首先,這裏是我的代碼:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from usdirectory.items import UsdirectoryItem
from scrapy.http import Request
class MySpider(BaseSpider):
name = "usdirectory"
allowed_domains = ["domain.com"]
start_urls = ["url_removed_sorry"]
def parse(self, response):
hxs = HtmlXPathSelector(response)
titles = hxs.select('//*[@id="holder_result2"]/a[1]/span/span[1]/text()').extract()
for title in titles:
item = UsdirectoryItem()
item["title"] = title
item
yield item
這工作...但它只是抓住了第一個項目。
我注意到在我試圖抓取的項目中,每行的Xpath更改。例如,第一行是你看到上面的XPath:
//*[@id="holder_result2"]/a[1]/span/span[1]/text()
然後遞增2,一路29.於是,第二個結果:
//*[@id="holder_result2"]/a[3]/span/span[1]/text()
最後結果:
//*[@id="holder_result2"]/a[29]/span/span[1]/text()
所以我的問題是如何讓腳本抓住所有這些,我不在乎我是否需要複製和粘貼每個項目的代碼。所有其他頁面都完全一樣。我只是不確定如何去做。
非常感謝。
編輯:
import scrapy
from scrapy.item import Item, Field
class UsdirectoryItem(scrapy.Item):
title = scrapy.Field()
這可能是你的問題的格式問題上的代碼,但一個問題是,「屈服項目」需要在裏面了「冠軍」循環。只有在「解析」結束時纔有一個收益,您只會得到1個項目 –