Scrapy рекурсивно очищает Craigslist

Я использую scrapy, чтобы удалить Craigslist и получить все ссылки, перейти по этой ссылке, сохранить описание для каждой страницы и отправить электронное письмо для ответа. Теперь я написал скрап-скрипт, который просматривает craigslist/sof.com и получает все названия должностей и URL-адреса. Я хочу зайти внутрь каждого URL-адреса и сохранить адрес электронной почты и описание для каждой работы. Вот мой код:

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

Любые идеи, как это сделать?


person Scooby    schedule 26.11.2013    source источник
comment
Как сделать что именно? Что-то не так с вашим кодом или вам нужно больше кода?   -  person rickhg12hs    schedule 26.11.2013
comment
Мне нужно больше кода. Этот код в порядке. Я хочу рекурсивно пройти по ссылке, а затем удалить данные этих ссылок.   -  person Scooby    schedule 26.11.2013


Ответы (2)


функции scrapy должны выдавать (или возвращать) Item/s и Запрос/ы

возвращенный элемент будет конвейерным в соответствии с конфигурацией, следующим шагом паука определяется путем возврата запроса со ссылкой на функцию в поле обратного вызова

из скрап-документации:

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)
person Guy Gavriely    schedule 26.11.2013

Скрапинг Craigslist является незаконным в соответствии с их политикой:

Запрещены роботы, пауки, скрипты, скребки, краулеры и т.д.

источник: https://www.craigslist.org/about/terms.of.use

Теперь их API - это другой вопрос, однако он обновляется только каждый час (поэтому время задержки составляет 1 час).

person Salman Salman    schedule 18.07.2016