До сих пор я нашел, как очистить одну страницу или несколько страниц с одинаковым URL-адресом, но с изменением числа. Однако я не мог найти, как очистить страницы с подкатегориями и их подкатегориями и, наконец, получить необходимый контент. Я пытаюсь очистить этот сайт: http://www.askislam.org/index.html Я использую Scrapy, но я не знаю с чего начать. Или вы можете предложить лучший вариант, я просто использую python и проверяю оттуда.Сломка/обход нескольких страниц
Благодаря
# -*- 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")
Возможный дубликат http://stackoverflow.com/questions/30580974/how-to-crawl-links-on-all-pages-of-a-web-site-with-scrapy –
Это может быть полезно чтобы дать некоторый код того, что вы можете очистить. Другим людям проще разрабатывать существующий код, чем создавать полный паук для вас. – Casper