五一假期,研究了下Python抓取动态网页信息的相关操作,结合封面的参考书、网上教程编写出可以满足需求的代码。由于初涉python,过程中曲折很多,为了避免以后遇到问题找不到相关的信息创建本文。

准备工具:

  1. Python 3.8
  2. Google Chrome浏览器
  3. Googledriver

测试网站:

1.集思录(https://www.jisilu.cn/data/cbnew/#cb)

测试前准备:

1.配置python运行的环境变量,参照链接(https://www.runoob.com/python3/python3-install.html)

*本次测试主要采取两种方式抓取动态网页数据,一是requests及json分析的方式;一是selenium的方式。requests方式速度快,但有一些元素的链接信息抓取不到;selenium方式通过模拟打开浏览器的方式进行数据的抓取,由于要打开浏览器因此速度相对较慢,但是可抓取的信息比较全面。

主要抓取的内容如下:(网站中的一些可转债数据)

requests 方式抓取网站信息:

Python需要安装的相关脚本:Requests

安装方式:管理员身份运行cmd;输入 pip install requests 命令,安装成功后会有提醒。如果一次不能安装成功就多安装几次

(前提相关的端口没有封闭)。如果pip版本不是最新的,会提醒更新pip的版本,pip的环境变量也要设置,设置方式参照python的设置方式。

requests抓取代码如下:

import requests
import json
url='https://www.jisilu.cn/data/cbnew/cb_list/?___jsl=LST___'
return_data = requests.get(url,verify = False)
js=return_data.json()
for i in js['rows']:print(i['id']+" "+i['cell']['bond_nm']+" "+i['cell']['price'])

最终结果如下:

注意两个要点:

找到正确的url:chrome打开集思录网站(https://www.jisilu.cn/data/cbnew/#cb)。点击F12键,弹出的开发工具窗口中选network,然后选XHR,点F5键刷新。在name的那一栏里逐个点击,找到所需的XHR。通过preview可发现“?__jsl=LST”对应的XHR就是我们要寻找的,在headers里可以查到对应的url。

json将requests的数据格式进行转化,方便数据查找。通过json格式转化之后,requestes的数据格式与preview的格式一致。如果要定位到“国轩转债”那栏数据,则使用代码js['rows']['cell']['bond_nm']*selenium抓取网页数据:

python 需安装的脚本:selenium(安装方式参照requests安装)

配置与浏览器相对应的webdriver。以chrome为例,下载与chrome版本对应(在地址栏输入chrome://version后回车查看chrome的版本)的driver。放在chrome安装的文件夹下,并设置环境变量。

selenium抓取代码如下:

from selenium import webdriver
import time
driver=webdriver.Chrome()
url1='https://www.jisilu.cn/data/cbnew/#cb'
bes=driver.get(url1)
time.sleep(5)  #增加延时命令,等待元素加载
driver.find_element_by_tag_name("tr").click()  #增加延时,等待元素加载
table_tr_list=driver.find_element_by_xpath("//*[@id='flex_cb']").find_elements_by_tag_name("tr") #后面一个element改成elements
for tr in table_tr_list:if len(tr.get_attribute('id'))>0:print(tr.find_element_by_xpath("//*[@id=%d]/td[1]/a"%(int(tr.get_attribute('id')))).text+" "+tr.find_element_by_xpath("//*[@id=%d]/td[2]"%(int(tr.get_attribute('id')))).text)
driver.quit()

运行结果如下:

注意三个要点:

1、要加上延时命令( time.sleep(5) ),否则可能出现寻找不到元素的报错(NoSuchElementException异常)

2、利用find_element_by_xpath时,可以在网页开发器中右击copy xpath,确认该元素的路径。

3、传送ID时,将字符转为数值,并注意清除空字符

抓取的数据也可通过python 保存到excel里。

Python 抓取动态网页表格信息相关推荐

  1. python网页数据存入数据库_python网络爬虫抓取动态网页并将数据存入数据库MySQL...

    简述 以下的代码是使用python实现的网络爬虫,抓取动态网页 http://hb.qq.com/baoliao/ .此网页中的最新.精华下面的内容是由JavaScript动态生成的.审查网页元素与网 ...

  2. python网站数据写入mysql_python网络爬虫抓取动态网页并将数据存入数据库MySQL

    简述 以下的代码是使用python实现的网络爬虫,抓取动态网页 http://hb.qq.com/baoliao/ .此网页中的最新.精华下面的内容是由JavaScript动态生成的.审查网页元素与网 ...

  3. python爬虫抓取动态网页数据_python网络爬虫抓取ajax动态网页数据:以抓取KFC门店地址为例...

    一,尝试用BeautifulSoup抓取 先打开KFC网站门店列表页面:http://www.kfc.com.cn/kfccda/storelist/index.aspx 可以看到门店列表如下图: 打 ...

  4. python爬取动态网页图片

    爬取某知名网站图片(爬取动态网页) python爬取动态网页图片 python爬取动态网页图片 环境: python3.pycharm 库: requests.urllib.json 思路: 1.分析 ...

  5. selenium抓取动态网页数据

    1.selenium抓取动态网页数据基础介绍 1.1 什么是AJAX AJAX(Asynchronouse JavaScript And XML:异步JavaScript和XML)通过在后台与服务器进 ...

  6. python爬取动态网页_python爬取动态网页数据,详解

    原理:动态网页,即用js代码实现动态加载数据,就是可以根据用户的行为,自动访问服务器请求数据,重点就是:请求数据,那么怎么用python获取这个数据了? 浏览器请求数据方式:浏览器向服务器的api(例 ...

  7. scrapy和selenium结合抓取动态网页

    1.安装python (我用的是2.7版本的) 2.安装scrapy:   详情请参考 http://blog.csdn.net/wukaibo1986/article/details/8167590 ...

  8. 用python抓取智联招聘信息并存入excel

    用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步 ...

  9. Python3 Selenium+ChromeDriver抓取动态网页

    以前抓取动态网页是用PhantomJS + Selenium + ChromeDriver,但是新版的Selenium不支持PhantomJS了,程序跑的时候总会跳出一些warnings. 现在的操作 ...

最新文章

  1. oracle修改memory,Oracle 修改 MEMORY_TARGET
  2. 网络营销外包专员浅析从用户角度出发如何完善网络营销外包?
  3. MDEV Primer
  4. BZOJ1179 Atm //缩点+spfa
  5. stm32l0的停止模式怎么唤醒_手把手教你怎么利用旧电脑搭建NAS组建自己的黑群晖...
  6. 经典分享:一份高达555页的技术PPT会是什么样子?
  7. 定义你自己的Logj4 输出,比如 数据库连接池 database connect pool
  8. 10.企业安全建设指南(金融行业安全架构与技术实践) --- 安全预算、总结与汇报
  9. Linux运维之道(大量经典案例、问题分析,运维案头书,红帽推荐)
  10. leetcode88
  11. VB的阶乘和伽马函数
  12. 盘古开源:中央网信办发布“十四五”国家信息化规划,数字化春风吹遍全国
  13. win10专业版修改家庭计算机,win10家庭版升级专业版的最完美的方法_win10专业版技巧...
  14. 代码调试全指南-自然语言处理-基于预训练模型的方法,车万翔
  15. YOLACT论文阅读及解析
  16. 解密excel.xls文件密码
  17. 我的世界java版如何导入皮肤_《我的世界》导入皮肤方法一览 如何导入皮肤
  18. 在Centos6/RHEL6上恢复ext4文件系统下误删除的文件
  19. opencv手势识别(3_SVM算法识别)
  20. 职场漂流记:过往皆为浮云

热门文章

  1. 创业是一条艰辛的路,有多少人敢于选择?
  2. Oracle 队列锁类型 Oracle Enqueue Lock Type Reference including 11g new locks
  3. Qt Creator远程调试嵌入式ARM开发板
  4. 【疯壳·机器人教程5】人形街舞机器人-舵机的基本控制
  5. 结合Spring源码学习单例设计模式
  6. 基于JAVA校园外卖零食商城系统计算机毕业设计源码+系统+数据库+lw文档+部署
  7. 解决一个金蝶KIS云专业版客户端不能打印的问题
  8. 改进Hit_Disk游戏
  9. 华为云发布,怎么样?
  10. 大生态里的小生态:IBOS开源OA借道云市场构建高价值协同云