2017-06-04 3 views
0

私はScrapy for Pythonを次のガイドで学習しようとしています:http://brutalsimplicity.github.io/2016/07/25/scrapy.html。私は指示に従って、私は手作業でいくつかのデータをスクラップシェルで掻き集めることができますが、私が望むものをターゲットにした問題があります。 @classとPython - Scrapy/@classでは@idではなくXpathクエリを見つけることができます

<div class="overthrow table_container" id="div_pbp"> 

:私は、次のdivクラスをターゲットにしようとすると

response.xpath('//div[@class="overthrow table_container"]') 

を、それが動作し、私は応答として

[<Selector xpath='//div[@class="overthrow table_container"]' data=u'<div class="overthrow table_container" i'>] 

を得るが、私がしようとすると、 @idと同じようにする:

response.xpath('//div[@id="div_pbp"]') 

ig空の括弧[]を応答として返します。

Edit1:Windows 10、Pythonバージョン2.7.13、Scrapyバージョン1.4.0を使用しています 私のクエリを間違って作成していますか?

Edit2:私は、スクラップシェルの出力が途切れていることに気付きました。 // divですべてのdivを表示すると、次のような出力が得られます。 Image
これが問題になりますか?セレクタ全体を取得し、それをカットしないようにするには、どのようにして治療法を教えてください。

EDIT3:別の例:その後、

response.xpath('//div[@id="all_game_info"]')


<Selector xpath='//div[@id="all_game_info"]' data=u'<div id="all_game_info" class="table_wrapper columns'>

私はそれにアクセスする場合:ウェブサイト上の開発ツールを使用している場合、私はセレクタがあるべき見
私は得る:

ですので、部品をカットオフします。これはすべてにあった:私は今、私はところで、空の括弧[]

を取得し、この

response.xpath('//div[@class="table_wra"]')

または

response.xpath('//div[@class="table_wrapper columns"]')

のようなクラス変数を検索しようとすると、スキンシェル

+0

この質問にHTMLなどのコードを供給するたびたい人は試してみるように、あなたは、テキストとして、あなたの質問内ではなく、イメージとして私たちにそれをお願いします様々な可能性が出てきます。 –

+0

これをテキストとして追加しました – BlackBat

+0

どちらのXPathでも同じ結果が得られます。あなたの質問を編集し、環境(バージョン、OS)に関する情報を追加できますか?私はpython 2.7.11とscrapy 1.4.0でテストしました –

答えて

0

私は最終的に真鍮タックに落ちて、あなたが直面している問題を再現しました。私はScrapyシェルもIPythonも使用していないので、これは少し違って見えます。

requestsライブラリを使用してページのコンテンツを取得した後、scrapyHtmlResponseオブジェクトを使用して、xpath式を使用してページを検索できるようにします。

私の経験はあなたと同じでした。

>>> url = 'http://www.pro-football-reference.com/boxscores/201409040sea.htm' 
>>> from scrapy.selector import Selector 
>>> import requests 
>>> page = requests.get(url).content 
>>> response = HtmlResponse(url,body=page) 
>>> response.xpath('//div[@class="overthrow table_container"]') 
[<Selector xpath='//div[@class="overthrow table_container"]' data='<div class="overthrow table_container" i'>] 
>>> response.xpath('//div[@id="div_pbp"]') 
[] 

私はdiv_pbpのHTMLを見ました。私はでなければならないは驚いている:これは頻繁に起こる。私たちが探していたのはコメントであり、そのページには1つしかありません。

in a comment

EDIT:ステートメントからの出力は、テキストと膨大になるならば、あなたが使用できる1つの戦術は、Python名にその出力を保存して、検査用のファイルにその名前を書くことです。このような何か:

enormousOutput = <statement> 
open('temp.txt', 'w').write(enormousOutput) 
+0

答えをありがとう!私は編集セクションで尋ねた他の質問(選別者をカット)に関する提案がありますか?前もって感謝します! – BlackBat

+0

編集に提案が表示されます。 –

+0

ありがとう!悲しいことに、出力はまだ切り取られています(文字通り:2行目はセレクタ内になく、1行ではありません)。どのような提案、またはその問題の別の質問を開く必要がありますか?再度、感謝します!あなたは大きな助けになります! – BlackBat

関連する問題