2012-06-08 15 views
11
साथ प्रमाणीकृत जबकि

तो मैं Crawling with an authenticated session in Scrapy पढ़ने के बाद मैं काट दिया हो रही हूँ, मैं 99% यकीन है कि मेरी पार्स कोड सही है हूँ, मैं तो बस विश्वास नहीं करते लॉगिन पुनः निर्देशित और सफल किया जा रहा है।क्रॉलिंग लिंक्डइन Scrapy

मैं भी check_login_response यकीन नहीं क्या पृष्ठ यह जाँच कर रहा है() के साथ एक समस्या हो रहा है .. हालांकि "साइन आउट" मतलब होगा।




====== UPDATED ======

from scrapy.contrib.spiders.init import InitSpider 
from scrapy.http import Request, FormRequest 
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from scrapy.contrib.spiders import Rule 

from scrapy.spider import BaseSpider 
from scrapy.selector import HtmlXPathSelector 

from linkedpy.items import LinkedPyItem 

class LinkedPySpider(InitSpider): 
    name = 'LinkedPy' 
    allowed_domains = ['linkedin.com'] 
    login_page = 'https://www.linkedin.com/uas/login' 
    start_urls = ["http://www.linkedin.com/csearch/results?type=companies&keywords=&pplSearchOrigin=GLHD&pageKey=member-home&search=Search#facets=pplSearchOrigin%3DFCTD%26keywords%3D%26search%3DSubmit%26facet_CS%3DC%26facet_I%3D80%26openFacets%3DJO%252CN%252CCS%252CNFR%252CF%252CCCR%252CI"] 

    def init_request(self): 
     #"""This function is called before crawling starts.""" 
     return Request(url=self.login_page, callback=self.login) 

    def login(self, response): 
     #"""Generate a login request.""" 
     return FormRequest.from_response(response, 
        formdata={'session_key': '[email protected]', 'session_password': 'somepassword'}, 
        callback=self.check_login_response) 

    def check_login_response(self, response): 
     #"""Check the response returned by a login request to see if we aresuccessfully logged in.""" 
     if "Sign Out" in response.body: 
      self.log("\n\n\nSuccessfully logged in. Let's start crawling!\n\n\n") 
      # Now the crawling can begin.. 

      return self.initialized() # ****THIS LINE FIXED THE LAST PROBLEM***** 

     else: 
      self.log("\n\n\nFailed, Bad times :(\n\n\n") 
      # Something went wrong, we couldn't log in, so nothing happens. 

    def parse(self, response): 
     self.log("\n\n\n We got data! \n\n\n") 
     hxs = HtmlXPathSelector(response) 
     sites = hxs.select('//ol[@id=\'result-set\']/li') 
     items = [] 
     for site in sites: 
      item = LinkedPyItem() 
      item['title'] = site.select('h2/a/text()').extract() 
      item['link'] = site.select('h2/a/@href').extract() 
      items.append(item) 
     return items 



मुद्दा स्वयं के सामने 'वापसी' जोड़कर हल किया गया था .initialized()

धन्यवाद फिर से! मार्क

+0

जब आप ऊपर दिए गए कोड को चलाने के क्या होता है? – Acorn

+0

' 'request_depth_max': 1, \t 'अनुसूचक/memory_enqueued': 3, \t 'start_time': datetime.datetime (2012, 6, 8, 18, 31, 48, 252,601)} 2012-06-08 14 : 31: 49-0400 [LinkedPy] जानकारी: स्पाइडर बंद (समाप्त) 2012-06-08 14: 31: 49-0400 [scrapy] जानकारी: डम्पिंग वैश्विक आँकड़े: {} ' – Gates

+2

सूचना के इस तरह में रखा जाना चाहिए टिप्पणियों के बजाय आपका मूल प्रश्न। – Acorn

उत्तर

2
class LinkedPySpider(BaseSpider): 

होना चाहिए:

class LinkedPySpider(InitSpider): 

इसके अलावा, आप parse समारोह पर हावी नहीं होना चाहिए के रूप में मैं यहाँ मेरा उत्तर में उल्लेख किया है: https://stackoverflow.com/a/5857202/crawling-with-an-authenticated-session-in-scrapy

आप समझ में नहीं आता तो कैसे
http://readthedocs.org/docs/scrapy/en/latest/topics/spiders.html#scrapy.contrib.spiders.Rule
01: लिंक निकालने के लिए नियमों को परिभाषित, बस प्रलेखन के माध्यम से एक उचित पढ़ने है

+0

इससे मदद मिली। मैं सफलता का एक लॉग देखता हूं। ** लेकिन ** मुझे यकीन नहीं है कि 'डीफ़ पार्स (स्वयं, प्रतिक्रिया):' वास्तव में चल रहा है। मैंने वहां एक self.log() डालने की कोशिश की और कुछ भी वापस नहीं आया। – Gates

+0

इसके अलावा 'start_urls' url लॉग – Gates

+0

में दिखाई नहीं दे रहा है ऐसा लगता है कि 'parse()' 'parse_item()' – Gates

संबंधित मुद्दे