Bis jetzt habe ich gefunden, wie man eine Seite oder mehrere Seiten mit derselben URL, aber ändernder Zahl schabt. Jedoch konnte ich nicht finden, wie man Seiten mit Unterkategorien und ihren Unterkategorien kratzt und schließlich den benötigten Inhalt erhält. Ich versuche, diese Website zu kratzen: http://www.askislam.org/index.html Ich benutze Scrapy, aber ich weiß nicht, wo ich anfangen soll. Oder Sie können eine bessere Option vorschlagen, verwende ich einfach Python und von dort aus überprüfen.Mehrere Seiten scrappen/crawlen
Dank
# -*- coding: utf-8 -*-
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import Spider
from scrapy import Selector
from ask_islam.items import AskIslamItem
from scrapy.http import Request
from scrapy.linkextractors import LinkExtractor
import re
class AskislamSpider(Spider):
name = "askislam"
allowed_domains = ["askislam.org"]
start_urls = ['http://www.askislam.org/']
rules = [Rule(LinkExtractor(allow =()), callback = 'parse', follow=True)]
def parse(self, response):
hxs = Selector(response)
links = hxs.css('div[id="categories"] li a::attr(href)').extract()
for link in links:
url = 'http://www.askislam.org' + link.replace('index.html', '')
yield Request(url, callback=self.parse_page)
def parse_page(self, response):
hxs = Selector(response)
categories = hxs.css('div[id="categories"] li').extract()
questions = hxs.xpath('a').extract()
if(categories):
for categoryLink in categories:
url = 'http://www.askislam.org' + categoryLink.replace('index.html', '')
yield Request(url, callback=self.parse_page)
# print (question)
EDIT
def start_requests(self):
yield Request("http://www.askislam.org", callback=self.parse_page)
def parse_page(self, response):
hxs = Selector(response)
categories = hxs.css('#categories li')
for cat in categories:
item = AskIslamItem()
link = cat.css('a::attr(href)').extract()[0]
link = "http://www.askislam.org" + link
item['catLink'] = link
logging.info("Scraping Link: %s" % (link))
yield Request(link, callback=self.parse_page)
yield Request(link, callback=self.parse_categories)
def parse_categories(self, response):
logging.info("The Cat Url")
Mögliche Duplikat http://stackoverflow.com/questions/30580974/how-to-crawl-links-on-all-pages-of-a-web-site-with-scrapy –
Es könnte hilfreich sein, um einen Code zu geben, was Sie in der Lage sind zu kratzen. Es ist einfacher für andere Leute, bestehenden Code zu entwickeln, als eine vollständige Spinne für Sie zu erstellen. – Casper