Я пытался собрать данные с сайта: http://uk.ratemyteachers.com/. Я хочу получить информацию от определенного числа учителей, которым я не знаю имя с сайта.
У каждого учителя есть страница на веб-сайте, которая следует регулярному шаблону.Так, например, этот учитель Lois Bank хранится по адресу: http://uk.ratemyteachers.com/lois-banks/184618-t. Таким образом, шаблон - это имя учителя, косая черта, число, тире t.
До того, как я попытался использовать CrawlSpider для сканирования с домашней страницы с помощью регулярных выражений, но это не сработало, потому что страницы, к которым я пытаюсь получить доступ, не связаны с домашней страницей, единственный способ получитьих путем поиска имени учителя в поле поиска.
Я пытался написать следующий паук, но это не сработало:
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.loader import XPathItemLoader
from scrapy.http import Request
from rmt.items import RmtItem_2
class RmtSpider(CrawlSpider):
name = 'rmtspider_4'
allowed_domains = ['uk.ratemyteachers.com']
start_urls = ['http://uk.ratemyteachers.com/[-a-z0-9/]-t+$',]
def parse_category(self, response):
main_selector = HtmlXPathSelector(response)
xpath = '//div[@class="main-c"]'
sub_selectors = main_selector.select(xpath)
for selector in sub_selectors:
item = RmtItem_2()
l = XPathItemLoader(item=item, selector=selector)
l.add_value ('url', response.url)
l.add_xpath('name', '//div[@class="breadcrumb"]/a[5]/text()')
l.add_xpath('school', '//div[@class="breadcrumb"]/a[3]/text()')
l.add_xpath('department', '//div[@class="breadcrumb"]/a[4]/text()')
l.add_xpath('total_ratings', '////div[@class="desc-details"]/span/text()')
l.add_xpath('location', '//div[@class="breadcrumb"]/a[2]/text()')
yield l.load_item()
Буду признателен, если кто-нибудь сможет мне помочь с этой проблемой.Заранее благодарю.