Scrapy递归刮擦craigslist

时间:2013-11-26 02:07:14

标签: python scrapy scrapyd

我正在使用scrapy来废弃craigslist并获取所有链接,转到该链接,存储每个页面的描述和电子邮件以进行回复。现在我写了一个scrapy脚本,通过craigslist / sof.com获取并获取所有职位和网址。我想进入每个网址并保存每个作业的电子邮件和说明。继承我的代码:

from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from craigslist.items import CraigslistItem

class MySpider(BaseSpider):
    name = "craig"
    allowed_domains = ["craigslist.org"]
    start_urls = ["http://sfbay.craigslist.org/npo/"]
    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        titles = hxs.select("//span[@class='pl']")
        for titles in titles:
                title = titles.select("a/text()").extract()
                link = titles.select("a/@href").extract()
                desc = titles.select("a/replylink").extract
                print link, title

任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:1)

scrapy函数应该产生(或返回)Item/sRequest/s

根据配置返回的项目为pipelined,下一个蜘蛛步骤是通过返回一个请求,并在回调字段中引用该函数来确定

来自scrapy文档的

def parse_page1(self, response):
    return Request("http://www.example.com/some_page.html",
                      callback=self.parse_page2)

def parse_page2(self, response):
    # this would log http://www.example.com/some_page.html
    self.log("Visited %s" % response.url)

答案 1 :(得分:1)

根据他们的政策,刮痧craigslist是非法的:

  

禁止机器人,蜘蛛,脚本,刮刀,爬虫等

来源:https://www.craigslist.org/about/terms.of.use

现在他们的API是另一个问题,但是每小时只会更新一次(因此滞后时间为1小时)。