2017-07-04 8 views
0

こんにちは私はそこにいる間、ページのソースコードから見ることができないコンテンツをクロールしたいです。 サンプルサイト:https://bangumi.bilibili.com/anime/index#p=1&v=1&area=2&stat=0&y=0&q=0&tag=&t=1&sort=0 (私はアニメの情報を取得したい)ソースコード内の隠されたコンテンツ

は、誰も私にこれを行うための任意のヒントを与えることができますか?

おかげ

+0

このページから抽出したいデータの例を提供できますか?このサイトはJsを使用しています。例えば、[jsonファイル](https://bangumi.bilibili.com/web_api/season/index_global?page=1&page_size=20&version=1&is_finish=0&start_year=0&tag_id=&index_type=1&index_sort=0&area=2&quarter= 0)。そのページはそのコンテンツの入力に使用されます。あなたのブラウザで 'Network'タブを調べて、他のリクエストを検出することができます。 – vold

+0

ありがとうございます!このjsonファイルは、正確には「タイトル」「URL」の情報です。私はネットワークタブを見て、自動的にすべてのページから情報を引き出す方法があるかどうかを知りたいですか? –

答えて

0

このページの情報はすべてjsonによって入力されているため、jsonエンドポイントに直接リクエストできます。for loopを使用すると、すべての情報を抽出できます。

import scrapy 
import json 


class BiliSpider(scrapy.Spider): 
    name = "bilispider" 

    def start_requests(self): 
     url = "https://bangumi.bilibili.com/web_api/season/index_global?page={}&page_size=20&version=1&is_finish=0&start_year=0&tag_id=&index_type=1&index_sort=0&area=2&quarter=0" 
     for i in range(1, 99): 
      yield scrapy.Request(url.format(i), callback=self.parse) 

    def parse(self, response): 
     res = json.loads(response.text) 
     item = dict() 
     for el in res['result']['list']: 
      item['title'] = el['title'] 
      item['url'] = el['url'] 
      yield item 

# Output: 
# 2017-07-05 09:11:46 [scrapy.core.scraper] DEBUG: Scraped from <200 https://bangumi.bilibili.com/web_api/season/index_glo 
# bal?page=96&page_size=20&version=1&is_finish=0&start_year=0&tag_id=&index_type=1&index_sort=0&area=2&quarter=0> 
# {'title': '激斗战车(国语)', 'url': 'http://bangumi.bilibili.com/anime/5380'} 
# 2017-07-05 09:11:46 [scrapy.core.scraper] DEBUG: Scraped from <200 https://bangumi.bilibili.com/web_api/season/index_glo 
# bal?page=96&page_size=20&version=1&is_finish=0&start_year=0&tag_id=&index_type=1&index_sort=0&area=2&quarter=0> 
# {'title': '银河漂流VIFAM', 'url': 'http://bangumi.bilibili.com/anime/2437'} 
+0

ありがとうございます!私は同じ方法で試しました! –

+0

歓迎です、私は助けることができてうれしいです。 – vold

0

ウェブサイトのコンテンツを動的にロードするようで、そのため、あなたは(も、あなたにはJavaScriptを解析しなければならないことを意味する)完全にページをレンダリングする必要があります。 そのため、ヘッドレスブラウザの使用を検討する必要があります。

+0

ありがとうございます、私はjavascriptの結果を取得する方法についていくつかの情報を検索します。 –

関連する問題