Vin*_*nod 1 python ajax web-scraping
我这里有一个网站
这里列出了大约100家公司.如何使用Python(或C#)以编程方式保存下100家公司.在本页底部
显示1 - 100的528 <<上一页| 下一页>>
我看到了.如何访问该链接
下一页>>
以编程方式.此链接被视为基本网址+'#'(http://money.rediff.com/indices/bse/bsesmallcap#).如何保存所有1-528公司的详细信息(如单独的网页:1-100,101-200等).是否有针对这类任务的特殊定制程序.
你甚至不需要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)