2016-04-12 2 views
0

Итак, я новичок в области терапии, и я прихожу к проблеме, где (я считаю) исходный URL-адрес неверен.Scrapy Start_URL не соответствует

Затем нажмите на ссылку, чтобы загрузить в описание лагеря

Однако, когда я использую этот начальный URL оно не нагрузки. Значение. Эта процедура открывается и загружает telnet, но никогда не будет подключаться. Когда я использую http://www.w3.org/1999/xhtml (который я получаю из верхней строки в проверке (хром), он ползает, но кажется, что это совершенно неправильный сайт. (Я получил эту ссылку с верхней части страницы проверки).

и где это ДОЛЖНО начать , то URL является:?! http://www.kidscamps.com/camps/california-overnight-camps-page0.html

Любые идеи и Спасибо заранее к сожалению обо всех закомментирована

Так что я предполагаю, что мой главный вопрос, как я могу найти правильный URL, чтобы начать с, так как все мои другие скрипты работают правильно.

Также не работает wi правил.

from scrapy.spiders import CrawlSpider, Rule 
from scrapy.linkextractors import LinkExtractor 
from scrapy.selector import Selector 
from kidscamp_com.items import KidscampComItem 
import html2text 


class MySpider(CrawlSpider): 
    name = "kids" 
    #allowed_domains = "http://www.bayareaparent.com/Camp-Guide/index.php/cp/1/si/0/" 
    start_urls = ['http://www.kidscamps.com/residential/overnight_camp.html' 
    ] 

    rules = (
    Rule(LinkExtractor(allow=(), restrict_xpaths=('//*[@id="results-wrapper"]/div[1]/p[1]/a',)), callback="parse1", follow=True), 
    ) 


    def parse1(self, response): 
     hxs = Selector(response) 
     body = hxs.xpath('//*[@id="body-wrapper"]') 
     items = [] 
     for body in body: 
      item = KidscampComItem() 
     # item["camp_name"] = body.xpath('').extract() 
      # item["location"] = body.xpath('').extract() 
      item["phone"] = body.xpath('//a[@class="phone"]//text()').extract() 
      item["website"] = body.xpath('//*[@id="results-wrapper"]/div[1]/div/div[2]/ul[2]/li[2]/a').extract() 
      # item["email"] = body.xpath('').extract() 
      item["description"] = body.xpath('//*[@id="info-page"]/div[2]/div//text()').extract() 
      item["camp_size"] = body.xpath('//*[@id="info-page"]/div[2]/div/ul[1]/li[1]/dd').extract() 
      item["founded"] = body.xpath('//*[@id="info-page"]/div[2]/div/ul[1]/li[2]/dd').extract() 
      item["gender"] = body.xpath('//*[@id="info-page"]/div[2]/div/ul[1]/li[3]/dd').extract() 
      item["maximum_age"] = body.xpath('//*[@id="info-page"]/div[2]/div/ul[2]/li[1]/dd').extract() 
      item["minimum_age"] = body.xpath('//*[@id="info-page"]/div[2]/div/ul[2]/li[2]/dd').extract() 
      item["nearest_city"] = body.xpath('//*[@id="info-page"]/div[2]/div/ul[2]/li[3]/dd').extract() 
      items.append(item) 
      return items 

Отъезд robots.txt, который должен позволять сканировать большую часть своего сайта. Однако, прочитав в источнике немного больше, я заметил эту строку:

это означает, что даже если его не включен /robots.txt, он все еще не считается допустимым? Я даже пробовал, не слушая роботов (чтобы убедиться, что что-то изменилось), и ничего не произошло. Но если кто-то знает этот ответ, это будет круто.

UPDATE

Найдено, что, когда я изменил: start_urls на START_URL это работает. Вещь, которая странна в этом, заключается в том, что я использовал start_urls для своих других пауков, и он работает независимо от (и). Удивительно, почему здесь что-то меняется.

ответ

0

Bo scrapy standard spider class scrapy.spiders.Spider и класс scrapy.spiders.CrawlSpider используют атрибут start_urls.

От official documentation:

class MySpider(CrawlSpider): 
    name = 'example.com' 
    allowed_domains = ['example.com'] 
    start_urls = ['http://www.example.com'] 
    ... 

class MySpider(scrapy.Spider): 
    name = 'example.com' 
    allowed_domains = ['example.com'] 
    start_urls = ['http://www.example.com/1.html'] 
    ... 

Атрибут start_url не используется в любом месте.

+0

Я использую start_urls на линии 10. Это то, что вы ссылку? Другое дело, что когда я перехожу от start_urls к _url, он на самом деле сканирует. Однако в любой другой раз, когда я использовал start_urls, он работает так, как ожидалось. Я пропустил allow_urls, который мог бы ввести в заблуждение. –

0

Кажется, что веб-сайт, который вы просматриваете, плохо работает с пользовательским агентом Scrapy по умолчанию.

Убедитесь, что сайт в порядке, если вы их обходите, если они согласны с некоторыми UA с ними, чтобы они знали, что это вы. Установка агента пользователя в Scrapy является вопросом установки user_agent атрибута паука, например:

class MySpider(Spider): 
    user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" 
+0

Я вижу. Я сделаю это. Хотя я еще не видел сайт, который разрешает использование файла robots.txt, но ограничивается мета.Но опять же я новичок. Спасибо, я дам вам знать, как это работает –