スクレイプなどは必要ありません。実際にはjavascriptであるため、その「次へ」リンクで見つけるためのリンクはありません。
javascript:nextPage(document.paging.totalPages.value)
Chromeの開発者ツールを使用して、実際にどのようなリクエストを行っているかを確認しましたが、これは単なる認証されていないPOSTリクエストであることがわかりました。次の方法で、必要なページを取得できます。
import requests
r = requests.post('http://money.rediff.com/indices/bse/bsesmallcap',
data={'currentPageNo': 3, 'RowPerPage': 100})
print r.text
あなたがしなければならないのは'currentPageNo'
あなたが探しているページを取得するために引数を変更することです。 1ページあたりの行数を変更することもできますが、私はそれを試しませんでした。 更新:できません。私は試した。
実際に情報を保存するという点ではBeautifulSoup
、各リクエストからデータを取得して保存または保存するために使用できます。テーブルには定期的に各ページにクラスがあることを考えると、'dataTable'
見つけるのは非常に簡単です。したがって、6ページあるとすると、次のようなコードになります。
import requests
from bs4 import BeautifulSoup as BS
for page in range(1, 7):
r = requests.post('http://money.rediff.com/indices/bse/bsesmallcap',
data={'currentPageNo': page, 'RowPerPage': 100})
soup = BS(r.text)
table = soup.find(class_='dataTable')
# Add table information to whatever output you plan to use