Я создаю паука для очистки данных с веб-сайта. Это было нормально, пока я не добавил сканер с правилом, чтобы продолжить его на следующих страницах. Я предполагаю, что мой xpath в Правиле неверен. Не могли бы вы помочь мне исправить это? Ps: я использую python3
Это мой паук:
import scrapy
from scrapy.contrib.spiders import Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import Spider, CrawlSpider, Rule
from scrapy.selector import Selector
from task11.items import Digi
class tutorial(CrawlSpider):
name = "task11"
allowed_domains = ["meetings.intherooms.com"]
start_urls = ["https://meetings.intherooms.com/meetings/aa/al"]
rules = (Rule(LinkExtractor(allow=(), restrict_xpaths=('(//a[@class="prevNext" and contains(text(),"Next")])[1]')),callback="parse_page", follow=True),)
def parse_page(self, response):
sel = Selector(response)
sites = sel.xpath('//*[@class="all-meetings"]/tr')
items = []
for site in sites[1:]:
item = Digi()
item['meeting_title'] = site.xpath('td/text()').extract()
items.append(item)
return items
И это мой ожидаемый результат, который я получил после просмотра первой страницы (и хочу получить больше от следующих страниц):
2018-08-30 08:59:57 [scrapy.core.scraper] DEBUG: Scraped from <200 https://meetings.intherooms.com/meetings/aa/al>
{'meeting_title': ['Alabama Avenue & Lauderdale Street',
'SELMA, ',
'TUESDAY',
'7:00 PM',
'Alcoholics Anonymous']}
2018-08-30 08:59:57 [scrapy.core.scraper] DEBUG: Scraped from <200 https://meetings.intherooms.com/meetings/aa/al>
{'meeting_title': ['Alabama Avenue & Lauderdale Street',
'SELMA, ',
'THURSDAY',
'7:00 PM',
'Alcoholics Anonymous']}
2018-08-30 08:59:57 [scrapy.core.scraper] DEBUG: Scraped from <200 https://meetings.intherooms.com/meetings/aa/al>
{'meeting_title': ['Alabama Avenue & Lauderdale Street',
'SELMA, ',
'SUNDAY',
'7:00 PM',
'Alcoholics Anonymous']}
2018-08-30 08:59:57 [scrapy.core.scraper] DEBUG: Scraped from <200 https://meetings.intherooms.com/meetings/aa/al>
{'meeting_title': ['210 Lauderdale Street',
'SELMA, 36703',
'MONDAY',
'6:00 PM',
'Alcoholics Anonymous']}