2

私はスクレイピーに取り組んでおり、サイトをスクレイピングしていて、xpathアイテムをスクレイピングするために使用しています。しかし、一部にはdiv含まれてjavascriptいるため、javascript コードが含まれるまで xpath を使用するdiv idと、空のリストが返され、その div 要素 (javascript を含む) を含めずに HTML データをフェッチできます。

HTML コード

<div class="subContent2">    
   <div id="contentDetails">
       <div class="eventDetails">
            <h2>
                <a href="javascript:;" onclick="jdevents.getEvent(117032)">Some data</a>
            </h2>
       </div>
   </div>
</div> 

スパイダーコード

class ExampleSpider(BaseSpider):
    name = "example"
    domain_name = "www.example.com"
    start_urls = ["http://www.example.com/jkl/index.php"]


    def parse(self, response):
         hxs = HtmlXPathSelector(response)
         required_data = hxs.select('//div[@class="subContent2"]/div[@id="contentDetails"]/div[@class="eventDetails"]')

上記のように 内部text(Some data)から取得するにはどうすればよいですか、スクレイピーでJavaScriptを含む要素からデータをフェッチする別の方法はありますかanchor tagh2 element

4

1 に答える 1

2
<div class="subContent2">    
   <div id="contentDetails">
       <div class="eventDetails">
            <h2>
                <a href="javascript:;" onclick="jdevents.getEvent(117032)">Some data</a>
            </h2>
       </div>
   </div>
</div> 

問題は、この場合、「いくつかのデータ」文字列を取得するためのjavascriptコードではありません。

サブノードを取得するには、次のいずれかが必要です。

required_data = hxs.select('//div[@class="subContent2"]/div[@id="contentDetails"]/div[@class="eventDetails"]/h2/a/text()')

ここに画像の説明を入力してください

またはstring関数を使用します:

required_data = hxs.select('string(//div[@class="subContent2"]/div[@id="contentDetails"]/div[@class="eventDetails"])')
于 2012-06-12T13:55:51.570 に答える