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个项目 –