Chciałabym przeanalizować projekty kickstarter.com za pomocą scrapy, ale nie mogę wymyślić, jak zrobić projekty przeszukiwania pająków, których nie określam wprost pod hasłami start_urls. Mam pierwszą część kodu do scrapy (mogę wyodrębnić niezbędne informacje z jednej strony), po prostu nie mogę tego zrobić dla wszystkich projektów w domenie kickstarter.com/projects.Scrapy - parsowanie wszystkich podstron danej domeny
Z tego, co przeczytałem, uważam, że parsowanie jest możliwe (1) za pomocą linków na stronie początkowej (kickstarter.com/projects), (2) za pomocą linków z jednej strony projektu, aby przejść do innego projektu, oraz (3) za pomocą mapy witryny (której nie uważam za kickstarter.com), aby zlokalizować strony internetowe do analizy.
Spędziłem wiele godzin próbując każdej z tych metod, ale do tej pory nie dochodzę.
Użyłem kodu samouczka do scrapowania i zbudowałem na nim.
Oto część tak daleko, że działa:
from scrapy import log
from scrapy.contrib.spiders import CrawlSpider
from scrapy.selector import HtmlXPathSelector
from tutorial.items import kickstarteritem
class kickstarter(CrawlSpider):
name = 'kickstarter'
allowed_domains = ['kickstarter.com']
start_urls = ["http://www.kickstarter.com/projects/brucegoldwell/dragon-keepers-book-iv-fantasy-mystery-magic"]
def parse(self, response):
x = HtmlXPathSelector(response)
item = kickstarteritem()
item['url'] = response.url
item['name'] = x.select("//div[@class='NS-project_-running_board']/h2[@id='title']/a/text()").extract()
item['launched'] = x.select("//li[@class='posted']/text()").extract()
item['ended'] = x.select("//li[@class='ends']/text()").extract()
item['backers'] = x.select("//span[@class='count']/data[@data-format='number']/@data-value").extract()
item['pledge'] = x.select("//div[@class='num']/@data-pledged").extract()
item['goal'] = x.select("//div[@class='num']/@data-goal").extract()
return item
Uruchomiłem kod i działa. To scrapy wszystkich ostatnio uruchomionych projektów. Jeśli chcę zeskrobać wszystkie projekty (nie tylko te ostatnio uruchomione), czy po prostu zmienię reguły i parametry start_urls? Dziękuję bardzo. To jest ogromna pomoc. Nie wiem, co mogę zrobić, aby spłacić ciebie i społeczność. Przekażę akt dobroci. –
@ user2167391: Nie ma problemu. Scrapy jest naprawdę świetna, ale naprawdę trudno jest znaleźć przykłady w Internecie. Jeśli chodzi o Kickstarter, utrudniają dostęp do * wszystkich * swoich projektów, więc będziesz musiał zobaczyć, gdzie się znajdują. – Blender