如何webscrape这个网站

Vin*_*nod 1 python ajax web-scraping

我这里有一个网站

BSE SmallCap

这里列出了大约100家公司.如何使用Python(或C#)以编程方式保存下100家公司.在本页底部

显示1 - 100的528 <<上一页| 下一页>>

我看到了.如何访问该链接

下一页>>

以编程方式.此链接被视为基本网址+'#'(http://money.rediff.com/indices/bse/bsesmallcap#).如何保存所有1-528公司的详细信息(如单独的网页:1-100,101-200等).是否有针对这类任务的特殊定制程序.

jdo*_*dot 5

你甚至不需要scrapy或类似的东西 - 没有找到"Next"链接的链接,因为它实际上是javascript:

javascript:nextPage(document.paging.totalPages.value)
Run Code Online (Sandbox Code Playgroud)

我使用Chrome的开发人员工具来查看它实际发出的请求,结果证明这只是一个简单的未经身份验证的POST请求.您可以使用以下内容获取所需的任何页面:

import requests
r = requests.post('http://money.rediff.com/indices/bse/bsesmallcap',
              data={'currentPageNo': 3, 'RowPerPage': 100})
print r.text
Run Code Online (Sandbox Code Playgroud)

您所要做的就是更改'currentPageNo'参数以获取您正在寻找的任何页面. 您可能还可以更改每页的行数,但我没有尝试过. 更新:你不能; 我试过了.

在实际保存信息方面,您可以使用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
Run Code Online (Sandbox Code Playgroud)