如何使用 Python 和 Selenium 进行分页抓取页面
Posted
技术标签:
【中文标题】如何使用 Python 和 Selenium 进行分页抓取页面【英文标题】:How to Scrape page with pagination with Python & Selenium 【发布时间】:2018-06-01 01:20:04 【问题描述】:我一直试图从网站上删除“价格历史”标签下的表格 http://merolagani.com/CompanyDetail.aspx?symbol=ADBL
我已使用 Selenium 自动执行该过程,但实际上无法找到实际结果,无法切换到下一页
【问题讨论】:
您的代码请试用。 总是将代码和完整的错误消息(Traceback)放在有问题的地方(作为文本,而不是屏幕截图)。有一些有用的信息。 javascript/AJAX 从http://merolagani.com/handlers/webrequesthandler.ashx?type=get_company_graph&symbol=ADBL&dateRange=12
读取数据
已经添加了 ruby 代码,它实际上在答案部分做了一些工作,并且在 python 上遇到了真正的问题,因为我无法使用 Selenium 来自动化单击下一步按钮的过程。
selenium with scrapy for dynamic page的可能重复
【参考方案1】:
编辑: 经过几次测试后,我看到此网址仅提供页面上绘图/图形使用的数据,而不是来自 "Price History"
的数据。我没有看到带有"Price History"
数据的网址,所以这个答案不能解决问题。它将需要更多地挖掘请求和代码。
页面是用ASP.Net
创建的,它有一个非常奇怪的系统来向服务器发送信息。
它使用JavaScript
和<form>
代替链接来发送许多信息(在名称为_VIEWSTATE
的字段中)。
JavaScript
从 url 中读取数据(以 JSON 格式)
http://merolagani.com/handlers/webrequesthandler.ashx?type=get_company_graph&symbol=ADBL&dateRange=12
所以你也可以试试看
import requests
url = 'http://merolagani.com/handlers/webrequesthandler.ashx?type=get_company_graph&symbol=ADBL&dateRange=12'
r = r.requests(url)
data = r.json()
print('OK:', data['msgType'])
print('Symbol:', data['symbol'])
print('Name:', data['name'])
for row in data['quotes']:
print(' date:', row['date'])
print(' open:', row['open'])
print(' close:', row['close'])
print(' high:', row['high'])
print(' low:', row['low'])
print('volume:', row['volumen'])
print(' rsi:', row['rsi'])
print('----------------------')
结果:
OK: ok
Symbol: ADBL
Name: Agriculture Development Bank Limited
date: 12/18/2016
open: 540.0
close: 540.0
high: 540.0
low: 525.0
volume: 6847.0
rsi: 0.0
----------------------
date: 12/19/2016
open: 535.0
close: 520.0
high: 535.0
low: 520.0
volume: 6963.0
rsi: 0.0
----------------------
date: 12/20/2016
open: 520.0
close: 520.0
high: 530.0
low: 505.0
volume: 9974.0
rsi: 0.0
----------------------
【讨论】:
以上是关于如何使用 Python 和 Selenium 进行分页抓取页面的主要内容,如果未能解决你的问题,请参考以下文章
Python+Selenium与Chrome如何进行完美结合
使用 Selenium 和 Python,如何检查按钮是不是仍然可点击?
如何通过 Python 使用 GeckoDriver 和 Firefox 使 Selenium 脚本无法检测?
如何使用 Selenium 和 Python 在 Python 类中调用方法