利用phantomjs+selenium抓取fund.eastmoney.com/fund.html网站第二页js生成的页面

本文介绍如何使用PhantomJS和Selenium模拟浏览器操作,自动点击页面上的“第二页”按钮,获取基金网站的第二页数据,并通过循环实现多页数据抓取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/github_26672553/article/details/78550623
前面我们了解过:利用PyExecJS包来执行js,然后直接拿到了基金网站第二页的字典数据。

现在和之前的不一样,我们利用phantomjsselenium这2个包,模拟人工访问第二页,拿到第二页的网页源代码。

这里写图片描述

1、首先来肉眼分析第二页源码的特征。

用户点击”第二页”其实就是点击value=2的span元素。
当”第二页”加载了,span元素会多一个at的class。

2、找到”第二页”的按钮元素(也就是span),模拟点击

# coding: utf-8

from selenium import  webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions

driver = webdriver.PhantomJS(executable_path=r"你phantomjs可执行文件绝对路径")

# 请求一个网址
driver.get("http://fund.eastmoney.com/fund.html")

# 得到点击js的span
pageBtn = driver.find_element_by_id("pager").find_element_by_xpath("span[@value=2]")
pageBtn.click()

3、判断是否已经是”第二页”了,我们需要自定义一个函数来完成

# 第二页的span元素是否有"at"这个class
def isAt(driver):
    return driver.find_element_by_id("pager")\
        .find_element_by_xpath("span[@value=2]")\
        .get_attribute("class").find("at") != -1

WebDriverWait(driver,20).until(isAt)

print(driver.page_source) # 打印源码

最后打印源码确实是第二页的内容。

既然我们可以把第二页的网页内容抓取到,如何抓取第三页、第四页。。。
利用循环啊。
找到共有多少页,然后循环抓取就行了。

page_text = driver.find_element_by_id("pager").find_element_by_xpath("span[@class='nv']").text
total_page = ''.join(filter(str.isdigit,page_text)) # 得到总共有多少页
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值