Я работал над проектом со скрапом.С помощью этого прекрасного сообщества мне удалось почистить первую страницу этого сайта: http://www.rotoworld.com/playernews/nfl/football-player-news?ls=roto%3anfl%3agnav. Я тоже пытаюсь почистить информацию со «старых» страниц.Я исследовал "crawlspider", правила и экстракторы ссылок, и полагал, что у меня был правильный код.Я хочу, чтобы паук выполнил тот же цикл на последующих страницах.К сожалению, в тот момент, когда я запускаю его, он просто выплевывает первую страницу и не переходит на «старые» страницы.
Я не совсем уверен, что мне нужно изменить, и буду очень признателен за помощь.Есть посты вплоть до февраля 2004 года ... Я новичок в области интеллектуального анализа данных, и не уверен, является ли это реальной целью, чтобы иметь возможность очищать каждый пост.Если это так, я хотел бы, хотя.Пожалуйста, любая помощь приветствуется.Спасибо!
import scrapy
from scrapy.contrib.spiders import CrawlSpider,Rule
from scrapy.contrib.linkextractors import LinkExtractor
class Roto_News_Spider2(crawlspider):
name = "RotoPlayerNews"
start_urls = [
'http://www.rotoworld.com/playernews/nfl/football/',
]
Rules = (Rule(LinkExtractor(allow=(), restrict_xpaths=('//input[@id="cp1_ctl00_btnNavigate1"]',)), callback="parse_page", follow= True),)
def parse(self, response):
for item in response.xpath("//div[@class='pb']"):
player = item.xpath(".//div[@class='player']/a/text()").extract_first()
position= item.xpath(".//div[@class='player']/text()").extract()[0].replace("-","").strip()
team = item.xpath(".//div[@class='player']/a/text()").extract()[1].strip()
report = item.xpath(".//div[@class='report']/p/text()").extract_first()
date = item.xpath(".//div[@class='date']/text()").extract_first() + " 2018"
impact = item.xpath(".//div[@class='impact']/text()").extract_first().strip()
source = item.xpath(".//div[@class='source']/a/text()").extract_first()
yield {"Player": player,"Position": position, "Team": team,"Report":report,"Impact":impact,"Date":date,"Source":source}