今天我们来试着用python爬取东方财富网资金流向的表格数据。
第一步:程序及应用的准备
首先我们需要安装selenium库,使用命令pip install selenium;然后我们需要下载对应的chromedriver,安装网址:http://chromedriver.storage.googleapis.com/index.html,安装教程:Windows下载及安装chromedriver.exe_mry6的博客-CSDN博客_chromedriver.exe。我们的chromedriver.exe应该是在C:Program FilesGoogleChromeApplication中(即让它跟chrome.exe在同一个文件下)。
下载完成后,我们还需要做两件事:1.配置环境变量;
2.将chromedriver.exe拖到python文件夹里,因为我用的是anaconda,所以我直接是放入D:Anaconda中的。
此时,我们所需的应用已经准备好了。
第二步:进入我们要爬取的网页(东旭蓝天(000040)资金流向 _ 数据中心 _ 东方财富网),按F12进入调试模式. 可定义文档中的分区或节,可以对同一个 元素应用 class 或 id 属性,但是更常见的情况是只应用其中一种。这两者的主要差异是,class 用于元素组(类似的元素,或者可以理解为某一类元素),而 id 用于标识单独的唯一的元素。
当我们依次点击右侧div时,我们可以发现,我们想要爬取的数据对应的代码为右侧蓝色部分,而下方的
| 开始,以 | 结束的;在 | 开始,以 | 结束的。至此,我们对要爬取的数据的构成有了一个大概的认知。
第三步:编写程序 etree.HTML()可以用来解析字符串格式的HTML文档对象,将传进去的字符串转变成_Element对象。作为_Element对象,可以方便的使用getparent()、remove()、xpath()等方法。 options常用属性及方法为:
selenium的page_source方法可以获取到页面源码,提取出我们需要的信息。 div[@表示我们通过class属性的值定位到我们要爬取的表格div,‘/table’则是表示的下一级
a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 from selenium import webdriver #导入模块,selenium导入浏览器驱动,用get方法打开浏览器
import time
import re
import csv #存储数据
from lxml import etree #数据的解析
option = webdriver.ChromeOptions() #网址获取
option.add_argument('headless') #无界面启动,即设置浏览器静默
#等价于 options.headless=True
driver = webdriver.Chrome(options=option)
#等价于 driver = webdriver.Chrome(desired_capabilities=options.to_capablities())
driver.get('https://data.eastmoney.com/zjlx/000040.html') #打开浏览器
time.sleep(2) #推迟调用线程的运行,可表示进程挂起的时间,这里让他推迟执行2秒
source = driver.page_source #获取页面源码
mytree = etree.HTML(source) #解析网页内容
tables = mytree.xpath('//div[@]/table') #定位表格
for i in range(len(tables)): #循环表格
onetable = []
trs = tables[i].xpath('.//tr') #取出所有tr标签
for tr in trs:
ui = []
for td in tr:
texts = td.xpath(".//text()") #取出所有td标签下的文本
mm = []
for text in texts:
mm.append(text.strip("")) #去掉所有空格、换行符
ui.append(','.join(mm))
onetable.append(ui) #整张表格
with open('data.csv', 'a', newline='') as file: #将数据写入文件
csv_file = csv.writer(file)
for i in onetable:
csv_file.writerow(i) #按行写入
time.sleep(2)
driver.close() #关闭当前窗口
这样我们就可以把一个股票的历史资金流向的数据放在一个csv文件里了,接下去考虑到存储问题,我们可以尝试连接MySQL,将数据放入MySQL中。 Python相关栏目本月热门文章
热门相关搜索
路由器设置
木托盘
宝塔面板
儿童python教程
心情低落
朋友圈
vim
双一流学科
专升本
我的学校
日记学校
西点培训学校
汽修学校
情书
化妆学校
塔沟武校
异形模板
西南大学排名
最精辟人生短句
6步教你追回被骗的钱
南昌大学排名
清朝十二帝
北京印刷学院排名
北方工业大学排名
北京航空航天大学排名
首都经济贸易大学排名
中国传媒大学排名
首都师范大学排名
中国地质大学(北京)排名
北京信息科技大学排名
中央民族大学排名
北京舞蹈学院排名
北京电影学院排名
中国戏曲学院排名
河北政法职业学院排名
河北经贸大学排名
天津中德应用技术大学排名
天津医学高等专科学校排名
天津美术学院排名
天津音乐学院排名
天津工业大学排名
北京工业大学耿丹学院排名
北京警察学院排名
天津科技大学排名
北京邮电大学(宏福校区)排名
北京网络职业学院排名
北京大学医学部排名
河北科技大学排名
河北地质大学排名
河北体育学院排名
|
|---|



