2017-11-27 16 views
0

は、私は、ユーザー名などのいくつかの詳細を抽出するためにScrapyクローラを使用しています、upvotes、参加日などはScrapy(パイソン)で構文エラーを与える - XPathの

を、私は、各ユーザーのWebページから内容を抽出するためのXPathを使用しています。

コード:

import scrapy 
from scrapy.selector import HtmlXPathSelector 
from scrapy.http import Request 
from scrapy.spiders import BaseSpider 
from scrapy.http import FormRequest 
from loginform import fill_login_form 
from scrapy.selector import Selector 
from scrapy.http import HtmlResponse 

class UserSpider(scrapy.Spider): 
    name = 'userspider' 
    start_urls = ['http://forum.nafc.org/login/'] 
    #Getting the list of usernames 
    user_names = ['Bob', 'Tom'] #List of Usernames 

    def __init__(self, *args, **kwargs): 
     super(UserSpider, self).__init__(*args, **kwargs) 

    def parse(self, response): 
     return [FormRequest.from_response(response, 
        formdata={'registerUserName': 'user', 'registerPass': 'password'}, 
        callback=self.after_main_login)] 

    def after_main_login(self, response): 
     for user in self.user_names: 
      user_url = 'profile/' + user 
      yield response.follow(user_url, callback=self.parse_user_pages) 

    def parse_user_pages(self, response): 
     yield{ 
      "USERNAME": response.xpath('//div[contains(@class, "main") and contains(@class, "no-sky-main")]/h1[contains(@class, "thread-title")]/text()').extract_first() 
      "UPVOTES": response.xpath('//div[contains(@class, "proUserInfoLabelLeft") and @id="proVotesCap"]/text()').extract()[0] 
     } 

if __name__ == "__main__": 
    spider = UserSpider() 

Error looks like this

P.S.私は手動でScrapy Shellで自分のXPathの構文をチェックしていて、正常に動作していました

コードに気付いていないことはありますか?

答えて

1
あなたはあなたの最初の辞書の要素の後 ,を逃している

:助けを

{"USERNAME": response.xpath(...).extract_first(), 
"UPVOTES": response.xpath(...).extract()[0]} 
+1

感謝を!私は指摘のために愚かな間違いをした! –

関連する問題