我试图了解Scrapy的工作原理,但无法弄清楚如何让它爬行 .
我希望抓取的网站有一个页面http://www.example.com/Jason,其中包含http://www.example.com/Jason:Aron,http://www.example.com/Jason:Dan_De等格式的链接 .
我设法抓取像http://www.example.com/Jason:Aron这样的页面上的文本,但我不能让它从http://www.example.com/Jason开始并抓取所有链接在那里的页面 .
这是我的蜘蛛:
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import Selector
from tutorial.items import Item
class Spider(CrawlSpider):
name = "text"
allowed_domains = ["example.com"]
start_urls = [
"http://www.example.com/Jason",
"http://www.example.com/Jason:Aron",
]
rules = (Rule (SgmlLinkExtractor(allow=('Jason:*')), callback='parse'),)
def parse(self, response):
sel = Selector(response)
sites = sel.xpath('//div[@class="textbox"]')
items = []
for site in sites:
item = Item()
item['text'] = site.xpath('text()').extract()
items.append(item)
return items
任何建议表示赞赏 .
1 回答
当您使用
CrawlSpider
时,最好不要覆盖parse()方法:将
callback="parse"
更改为callback="parse_item"
,然后重试 .