سؤال

أنا في محاولة لجعل SgmlLinkExtractor العمل.

هذا هو التوقيع:

SgmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), restrict_xpaths(), tags=('a', 'area'), attrs=('href'), canonicalize=True, unique=True, process_value=None)

أنا فقط باستخدام allow=()

إذن أدخل

rules = (Rule(SgmlLinkExtractor(allow=("/aadler/", )), callback='parse'),)

لذا الأولية url 'http://www.whitecase.com/jacevedo/' وأنا على الدخول allow=('/aadler',) ونتوقع أن '/aadler/' سوف تحصل على مسحها كذلك.ولكن بدلا من ذلك, العنكبوت بفحص الأولي url ثم يغلق:

[wcase] INFO: Domain opened
[wcase] DEBUG: Crawled </jacevedo/> (referer: <None>)
[wcase] INFO: Passed NuItem(school=[u'JD, ', u'Columbia Law School, Harlan Fiske Stone Scholar, Parker School Recognition of Achievement in International and Foreign Law, ', u'2005'])
[wcase] INFO: Closing domain (finished)

ماذا أفعل الخطأ هنا ؟

هل يوجد أحد هنا من استخدام Scrapy بنجاح الذين يمكن أن تساعد لي أن أنهي هذا العنكبوت ؟

شكرا لك على المساعدة.

أنا وتشمل رمز العنكبوت أدناه:

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from Nu.items import NuItem
from urls import u

class NuSpider(CrawlSpider):
    domain_name = "wcase"
    start_urls = ['xxxxxx/jacevedo/']

    rules = (Rule(SgmlLinkExtractor(allow=("/aadler/", )), callback='parse'),)

    def parse(self, response):
        hxs = HtmlXPathSelector(response)

        item = NuItem()
        item['school'] = hxs.select('//td[@class="mainColumnTDa"]').re('(?<=(JD,\s))(.*?)(\d+)')
        return item

SPIDER = NuSpider()

ملاحظة:لذلك لن اسمحوا لي بعد أكثر من 1 url لذا بديلا الأولي url حسب الضرورة.آسف على ذلك.

هل كانت مفيدة؟

المحلول

وأنت تجاوز "تحليل" طريقة يبدو. "تحليل"، هو أسلوب خاص في CrawlSpider تستخدم لتتبع الروابط.

نصائح أخرى

إذا كنت تحقق من الوثائق "تحذير"هو مكتوب بشكل واضح

"عند كتابة الزحف العنكبوت قواعد تجنب استخدام تحليل بمثابة رد ، منذ الزحف العنكبوت يستخدم تحليل الأسلوب نفسه لتنفيذ المنطق.حتى إذا تجاوز تحليل الأسلوب ، الزحف العنكبوت لم تعد تعمل."

رابط التحقق

والسماح = (ص '/ aadler /'، ...

وكنت في عداد المفقودين فاصلة بعد العنصر الأول ل "قواعد" لتكون الصفوف (tuple) ..

rules = (Rule(SgmlLinkExtractor(allow=('/careers/n.\w+', )), callback='parse', follow=True),)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top