İki temel örümcek, yani SitemapSpider ve CrawlSpider'ın işlevselliğini devralan bir örümcek yaratmak mümkün mü?Terapi örümceklerinde çoklu kalıtım
Çeşitli sitelerden verileri kazımaya çalışıyorum ve tüm sitelerin Web sitesinde her sayfanın listelenmediğini, dolayısıyla CrawlSpider'ı kullanmanın gerekmediğini fark ettim. Ancak CrawlSpider, birçok gereksiz sayfadan geçiyor ve bir çeşit overkill.
- SitemapSpider bir alt sınıfı olan benim Örümcek başlatın ve kullanışlı bilgi yöntemi ayıklamak parse_products için normal ifade eşleşti yanıtları geçmesi
: Ben yapmak istiyorum ne
böyle bir şeydir.
Regex ile eşleşen bağlantılara gidin:/reviews/ürünler sayfasından, ve verileri parse_review işlevine gönderin.
Not: "/ yorum /" tip sayfalar site haritasındaÖzü
CrawlSpider özyinelemeli taramaların için temelde yorumlar/sayfa/bilgi ve kazıma listelenmeyen
------- EK DETAYLAR -------
Söz konusu sitenin adresi www.flipkart.com The s Her sayfanın kendi ayrıntı sayfasına sahip olduğu birçok ürün için listeleme vardır. Ayrıntı sayfası ile birlikte, ürün için ilgili "gözden geçirme" sayfasıdır. İnceleme sayfasına bağlantı, ürün ayrıntıları sayfasında da mevcuttur.
Not: Sayfaları inceleme, site haritasında listelenmez.
class WebCrawler(SitemapSpider, CrawlSpider):
name = "flipkart"
allowed_domains = ['flipkart.com']
sitemap_urls = ['http://www.flipkart.com/robots.txt']
sitemap_rules = [(regex('/(.*?)/p/(.*?)'), 'parse_product')]
start_urls = ['http://www.flipkart.com/']
rules = [Rule(LinkExtractor(allow=['/(.*?)/product-reviews/(.*?)']), 'parse_reviews'),
Rule(LinkExtractor(restrict_xpaths='//div[@class="fk-navigation fk-text-center tmargin10"]'), follow=True)]
def parse_product(self, response):
loader = FlipkartItemLoader(response=response)
loader.add_value('pid', 'value of pid')
loader.add_xpath('name', 'xpath to name')
yield loader.load_item()
def parse_reviews(self, response):
loader = ReviewItemLoader(response=response)
loader.add_value('pid','value of pid')
loader.add_xpath('review_title', 'xpath to review title')
loader.add_xpath('review_text', 'xpath to review text')
yield loader.load_item()
bir kullanım örneklerini verebilir misiniz kullanmak
yield from
sözdizimi yok mu? Yardım etmek için yardımcı olur. Teşekkürler. – alecxeEvet elbette, ek bilgi – Ishan070692
merhaba alecxe ile düzenleyeceğim, – Ishan070692