Я использую Scrapy (Python), чтобы очистить эту веб-страницу.
Вот мои каталоги:
Код: Выделить всё
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", который у меня есть в Hotels_spyder.py, на этот: http://www.hotels.com/search.do?destina ... 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=
И это не работает. Я проверил исходный код обеих ссылок, и он один и тот же. Я действительно не понимаю, почему это не работает, и это сводит меня с ума уже неделю.
Заранее спасибо,
Фил>
Подробнее здесь: https://stackoverflow.com/questions/204 ... -a-website