2013-03-04 47 views
0

我的蜘蛛用於抓取MITOPENCOURSEWARE網站的教學大綱不起作用。有人請幫我弄清楚它有什麼問題嗎? 。*的要求是要參加所有課程。這是正確的嗎?使用Scrapy掃描MITOPENCOURSEWARE網站的教學大綱

1 from scrapy.contrib.spiders import CrawlSpider, Rule 
    2 from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
    3 from scrapy.selector import HtmlXPathSelector 
    4 from opensyllabi.items import OpensyllabiItem 
    5 
    6 class MITSpider(CrawlSpider): 
    7  name = 'mit' 
    8  allowed_domains = ['ocw.mit.edu'] 
    9  start_urls = ['http://ocw.mit.edu/courses'] 
10  rules = [Rule(SgmlLinkExtractor(allow=['/.*/.*/syllabus']), 'parse_syllabus')] 
11 
12  def parse_syllabus(self, response): 
13   x = HtmlXPathSelector(response) 
14 
15   syllabus = OpensyllabiItem() 
16   syllabus['url'] = response.url 
17   syllabus['body'] = x.select("//div[@id='course_inner_section']").extract() 
18   return syllabus 
+0

你怎麼知道它不工作,即發生了什麼?而且,要小心''*',謹慎使用。試試''/ [^ /] +/[^ /] +/syllabus''。 – 2013-03-04 04:22:23

+0

它爬取0頁。即使我按你的方式去做。 – user2130389 2013-03-04 04:47:53

+0

您的啓動網址上是否有「教學大綱」?顯示我的鏈接。 – 2013-03-04 05:19:29

回答

1

嘗試:

rules = [ 
    Rule(SgmlLinkExtractor(allow=r'/[^/]+/[^/]+/syllabus'), 'parse_syllabus'), 
    Rule(SgmlLinkExtractor()), 
] 

拿到第一頁上的所有鏈接,然後看出來,這是一個很大的聯繫。

+0

太棒了!工作。謝謝!現在,我如何將每個文件保存在不同的文件中?我知道如何將它們全部放在一個json文件中,但我想將它們分成不同的文件。 – user2130389 2013-03-04 06:01:43

+0

基本上我只是想將每個文本的正文保存到一個文件中。 – user2130389 2013-03-04 06:09:27

+1

「謝謝」不給我們勤勞的人在這裏聲譽。投票和接受。這些都是好事。然後,您可以閱讀網絡上的500個關於如何解決您的下一個問題的網頁,之後您肯定可以就SO提出另一個問題。 – 2013-03-04 06:28:09