网页表格抓取( Python抓取动态网页信息的相关操作、网上教程编写出)
优采云 发布时间: 2022-01-09 21:11网页表格抓取(
Python抓取动态网页信息的相关操作、网上教程编写出)
5月1日假期学习了Python爬取动态网页信息相关的操作,结合封面上的参考书和在线教程,编写了能满足自己需求的代码。由于最初是python的介入,所以过程中有很多曲折。为了避免以后出现问题,我找不到相关资料来创建这篇文章。
准备工具:
Python 3.8Google Chrome Googledriver
测试网站:
1.想法 (#cb)
考试前准备:
1.配置python运行的环境变量,参考link()
*本次测试主要采用两种方式抓取动态网页数据,一种是requests和json分析的方式;另一种是硒的方式。requests方法速度快,但是有些元素的链接信息抓不到;selenium 方法通过模拟打开浏览器来捕获数据。由于需要打开浏览器,所以速度比较慢,但是能抓取到的信息比较全面。
主要抓取内容如下:(网站中部分可转债数据)
获取网站信息的请求方法:
Python需要安装的相关脚本:Requests
安装方法:以管理员身份运行cmd;输入 pip install requests 命令,安装成功后会有提示。如果一次安装不成功,多安装几次。
(前提是相关端口没有关闭)。如果 pip 版本不是最新的,它会提醒你更新 pip 版本,pip 环境变量也要设置。设置方法参考python设置方法。
请求抓取代码如下:
import requestsimport jsonurl='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'])
最终结果如下:
注意两点:
找到正确的网址:chrome open brainstorming网站(#cb)。点击F12键,在弹出的开发工具窗口中选择network,然后选择XHR,点击F5键刷新。在名称栏中一一点击,找到所需的 XHR。通过预览我们可以发现“?__jsl=LST”对应的XHR就是我们要找的,在headers中可以找到对应的url。
JSON转换请求的数据格式,方便数据搜索。转换成json格式后,requests的数据格式和preview的数据格式一样。如果要定位“国轩转债”一栏的数据,使用代码js['rows']['cell']['bond_nm']*selenium抓取网页数据:
需要安装的Python脚本:selenium(安装方法参考请求安装)
配置浏览器对应的webdriver。以chrome为例,下载chrome版本对应的驱动(地址栏输入chrome://version,回车查看chrome版本)。把它放在安装chrome的文件夹中,并设置环境变量。
selenium 抓取代码如下:
from selenium import webdriverimport timedriver=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改成elementsfor 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中。