Я был на нем пару дней, но я все еще не могу найти ответ. Я использую scrapy (python), чтобы очистить this webpage.Scrapy не может царапать сайт
Here're мои каталоги:
hotels/
|_ scrapy.cfg
|_ hotels/
|_ __init__.py
|_ items.py
|_ pipelines.py
|_ settings.py
|_ spiders/
|_ __init__.py
|_ hotels_spyder.py
Содержание items.py
from scrapy.item import Item, Field
class HotelsItem(Item):
nameHotel = Field()
idHotel = Field()
Содержание hotels_spyder.py
from scrapy.spider import BaseSpider
from scrapy.selector import Selector
from hotels.items import HotelsItem
class HotelsSpider(BaseSpider):
name = "hotels"
allowed_domains = ["hotels.com"]
start_urls = ["http://fr.hotels.com/search.do?destination=New+York&arrivalDate=13%2F04%2F2015&departureDate=15%2F04%2F2015&rooms=1&children%5B0%5D=2&searchParams.rooms%5B0%5D.numberOfAdults=2&searchParams.rooms%5B0%5D.childrenAges%5B0%5D=7&searchParams.rooms%5B0%5D.childrenAges%5B1%5D=7&searchParams.landmark=&searchParams.resolvedLocation=CITY%3A1506246%3AEXACT_RED%3AHIGH&destinationId="]
def parse(self, response):
sel = Selector(response)
sites = sel.xpath('//h3[@class="hotel-name"]')
items = []
for site in sites:
item = HotelsItem()
type(item)
item['nameHotel'] = site.xpath('a/text()').extract()
item['idHotel'] = site.xpath('a/@id').extract()
items.append(item)
return items
Содержание settings.py
BOT_NAME = 'hotels'
SPIDER_MODULES = ['hotels.spiders']
NEWSPIDER_MODULE = 'hotels.spiders'
Так что все это работает должным образом. Он делает то, что я хочу (все же мне нужно чистить места и прочее).
Но моя конечная цель - очистить американскую версию веб-сайта. Итак, я попытался заменить список с именем «start_urls», который у меня есть в hotel_spyder.py с этим: http://www.hotels.com/search.do?destination=New+York&arrivalDate=03%2F18%2F15&departureDate=03%2F20%2F15&rooms=1&children[0]=2&searchParams.rooms[0].numberOfAdults=2&searchParams.rooms[0].childrenAges[0]=7&searchParams.rooms[0].childrenAges[1]=7&searchParams.landmark=&searchParams.resolvedLocation=CITY%3A1506246%3AEXACT_RED%3AHIGH&destinationId=
И он не работает. Я проверил исходный код обеих ссылок, и это то же самое. Я действительно не понимаю, почему это не работает, и это сводило меня с ума на неделю.
Спасибо заранее, Philippe
Как это не работает? Какие ошибки вы получаете? –
Он не может работать в данный момент, потому что запрос, который вы указываете в качестве ссылки, указывает дату прибытия до сегодняшнего дня, чтобы страница выдавала страницу с ошибкой. –
Вы правы, это была более старая версия, и я редактировал свой вопрос. Тем не менее это не работает. Дело в том, что я не получаю никаких ошибок, но у меня тоже нет выхода. – l3aronsansgland