Sto provando a eliminare un sito Web di e-commerce e lo sto facendo in 2 passaggi.Scrapy: Ottimizzazione Spider
Questo sito ha una struttura come questa:
- La homepage presenta i link alle-oggetti di famiglia e sottofamiglia-articoli pagine
- Ogni famiglia & pagina sottofamiglia ha una lista di prodotti impaginato
In questo momento ho 2 ragni:
- GeneralSpider per ottenere i link homepage e memorizzarli
- ItemSpider per ottenere gli elementi da ogni pagina
Sono completamente nuovo per Scrapy, sto seguendo alcuni tutorial per raggiungere questo obiettivo. Mi chiedo quanto possano essere complesse le funzioni di analisi e come funzionano le regole. I miei ragni in questo momento appare come:
GeneralSpider:
class GeneralSpider(CrawlSpider):
name = 'domain'
allowed_domains = ['domain.org']
start_urls = ['http://www.domain.org/home']
def parse(self, response):
links = LinksItem()
links['content'] = response.xpath("//div[@id='h45F23']").extract()
return links
ItemSpider:
class GeneralSpider(CrawlSpider):
name = 'domain'
allowed_domains = ['domain.org']
f = open("urls.txt")
start_urls = [url.strip() for url in f.readlines()]
# Each URL in the file has pagination if it has more than 30 elements
# I don't know how to paginate over each URL
f.close()
def parse(self, response):
item = ShopItem()
item['name'] = response.xpath("//h1[@id='u_name']").extract()
item['description'] = response.xpath("//h3[@id='desc_item']").extract()
item['prize'] = response.xpath("//div[@id='price_eur']").extract()
return item
- Quale è il modo migliore per rendere il ragno seguire l'impaginazione di un URL?
Se l'impaginazione è JQuery, significa che non c'è GET variabile nell'URL, sarebbe possibile seguire l'impaginazione?
Posso avere diverse "regole" nello stesso ragno per abolire diverse parti della pagina? o è meglio avere lo spider specializzato, ogni spider focalizzato su una cosa?
Ho anche su Google alla ricerca di qualsiasi libro in relazione con Scrapy, ma sembra non c'è alcun libro finito ancora, o almeno io non potrebbe trovare uno.
- Qualcuno sa se qualche Scrapy libro che uscirà a breve?
Edit:
si inserisce questo 2 di URL per questo esempio. Nella pagina Eroski Home è possibile ottenere l'URL alla pagina dei prodotti.
Nella pagina dei prodotti si dispone di un elenco di elementi impaginato (Eroski Articoli):
- URL per ottenere link: Eroski Home
- URL per ottenere elementi: Eroski Fruits
In la pagina Eroski Fruits, l'impaginazione degli articoli sembra essere JQuery/AJAX, perché più elementi vengono mostrati quando si scorre verso il basso, c'è un modo per ottenere tutti questi elementi con Scrapy?
Condividere il collegamento a un sito Web effettivo renderebbe più semplice la risposta. Grazie. – alecxe
@alecxe Ho aggiunto una modifica, controllo entrambi gli url –
Non ho mai usato scrapy, quindi non posso rispondere in modo specifico. Potresti trovare altri esempi di scraping che utilizzano librerie standard come 'httplib',' urllib', 'urllib2' per inviare query e' BeautifulSoup' per analizzare il contenuto delle pagine web ottenute. Guardando velocemente la tua pagina Fruit, vedo che sono in grado di ottenere ulteriori articoli aggiungendo 'page = 2' nell'url, ad es. 'http: //www.compraonline.grupoeroski.com/supermercado/ajax/listProducts.jsp? page = 2 & categoria = 2059698 & grupo = 2059699 & familia = 2059701' in modo da poter eseguire il loop fino a ottenere una pagina vuota (è il caso di 3 qui) – etna