python3实践-从网站获取数据(Carbon Market Data-BJ) (pandas,bs4)
自己边看边实践一些简单的实际应用,下面的程序是从某个网站上获取需要的数据。
在编写的过程中,通过学习陆续了解到一些方法,发现Python真的是很便捷。
尤其是用pandas获取网页中的表格数据,真的是太方便了!!!
程序写的可能并不好,但基本上实现了自己的需求。
希望有高手来指点下~~
Version 04 (Jan 12 2017)【对于获取表格信息,推荐使用该方法】
# Code based on Python 3.x
# _*_ coding: utf-8 _*_
# __Author: "LEMON" import pandas as pd url2 = 'http://www.bjets.com.cn/article/jyxx/?'
links = []
for n in range(2, 40):
# 页面总数为39页,需要自己先从网页判断,也可以从页面抓取,后续可以完善
link = url2 + str(n)
links.append(link)
links.insert(0, url2) df2 = pd.DataFrame() # creates a new dataframe that's empty
for url in links:
# 利用pandas获取数据,需要安装 html5lib模块
dfs = pd.read_html(url, header=0)
for df in dfs:
df2= df2.append(df, ignore_index= True) # df2.to_excel('MktDataBJ.xlsx') # 将数据存储在excel文件里
df2.to_csv('MktDataBJ-1.csv') # 将数据存储在csv文件里
Version 03 (Jan 12 2017)
# Code based on Python 3.x
# _*_ coding: utf-8 _*_
# __Author: "LEMON" from bs4 import BeautifulSoup
import requests
import csv url2 = 'http://www.bjets.com.cn/article/jyxx/?'
links = []
for n in range(2, 40):
# 页面总数为39页,需要自己先从网页判断,也可以从页面抓取,后续可以完善
link = url2 + str(n)
links.append(link)
links.insert(0, url2) for url in links:
rep = requests.get(url)
# content = rep.text.encode(rep.encoding).decode('utf-8')
# # 直接用requests时,中文内容需要转码 soup = BeautifulSoup(rep.content, 'html.parser') # table = soup.table
table = soup.find('table') # 两种方式都可以 trs = table.find_all('tr')
trs2 = trs[1:len(trs)]
list1 = []
for tr in trs2:
td = tr.find_all('td')
row = [i.text for i in td]
list1.append(row) with open('MktDataBJ.csv', 'a', errors='ignore', newline='') as f:
f_csv = csv.writer(f)
f_csv.writerows(list1)
Version 02 (Jan 09 2017)
# Code based on Python 3.x
# _*_ coding: utf-8 _*_
# __Author: "LEMON" from bs4 import BeautifulSoup
import requests
import csv url2 = 'http://www.bjets.com.cn/article/jyxx/?'
links = []
for n in range(2, 40):
# 页面总数为39页,需要自己先从网页判断,也可以从页面抓取,后续可以完善
link = url2 + str(n)
links.append(link)
links.insert(0, url2)
# print(links) for url in links:
rep = requests.get(url)
# content = rep.text.encode(rep.encoding).decode('utf-8')
# # 直接用requests时,中文内容需要转码 soup = BeautifulSoup(rep.content, 'html.parser')
body = soup.body
data = body.find('div', {'class': 'list_right'}) quotes = data.find_all('tr')
quotes1 = quotes[1:len(quotes)] list1 = []
for x in quotes1:
list2 = []
for y in x.find_all('td'):
list2.append(y.text) # 每日的数据做一个单独的list
list1.append(list2)
# print(list1) # list1为每日数据的总列表
with open('MktDataBJ.csv', 'a', errors='ignore', newline='') as f:
f_csv = csv.writer(f)
f_csv.writerows(list1)
Version 01 (Jan 08 2017)
# Code based on Python 3.x
# _*_ coding: utf-8 _*_
# __Author: "LEMON" from bs4 import BeautifulSoup
import requests
import csv urllink = 'http://www.bjets.com.cn/article/jyxx/?'
links = []
for n in range(2, 40):
#页面总数为39页,需要自己先从网页判断,也可以从页面抓取,后续可以完善
link = urllink + str(n)
links.append(link)
links.insert(0, urllink)
# print(links) for url in links: rep = requests.get(url)
# content = rep.text.encode(rep.encoding).decode('utf-8')
# # 直接用requests时,中文内容需要转码 soup = BeautifulSoup(rep.content, 'html.parser') # print(soup.prettify())
# # prettify() body = soup.body
data = body.find('div', {'class': 'list_right'}) # table title
titles = data.find_all('th') title = []
for x in titles:
title.append(x.text)
# print(title) quotes = data.find_all('tr')
quotes1 = quotes[1:len(quotes)]
# print(quotes1) list1 = []
for x in quotes1:
for y in x.find_all('td'):
list1.append(y.text)
# print(list1) # list为每日数据的总列表 date = []
volumes = []
meanprice = []
totalmoney = [] for i in range(0, len(list1)):
if i % 4 == 0:
date.append(list1[i])
elif i % 4 == 1:
volumes.append(list1[i])
elif i % 4 == 2:
meanprice.append(list1[i])
else:
totalmoney.append(list1[i]) # print(date)
# print(volumes)
# print(meanprice)
# print(totalmoney) final = []
for i in range(0, len(date)):
temp = [date[i], volumes[i], meanprice[i], totalmoney[i]]
final.append(temp)
# print(final)
with open('bj_carbon.csv', 'a', errors='ignore', newline='') as f:
f_csv = csv.writer(f)
f_csv.writerows(final)
python3实践-从网站获取数据(Carbon Market Data-BJ) (pandas,bs4)的更多相关文章
- python3实践-从网站获取数据(Carbon Market Data-GD) (bs4/Beautifulsoup)
结合个人需求,从某个网站获取一些数据,发现网页链接是隐藏的,需要通过浏览器看后面的代码来获取真实的链接. 下面这个案例,直接是从真实的链接中爬去数据. 此外,发现用pandas的read_html不能 ...
- Python Socket请求网站获取数据
Python Socket请求网站获取数据 ---阻塞 I/O ->收快递,快递如果不到,就干不了其他的活 ---非阻塞I/0 ->收快递,不断的去问,有没有送到,有没有送到,. ...
- ASP.NET Web API实践系列07,获取数据, 使用Ninject实现依赖倒置,使用Knockout实现页面元素和视图模型的双向绑定
本篇接着上一篇"ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API",尝试获取数据. 在Models文件夹下创 ...
- CTreeItem保存和获取数据
保存数据: std::string val = "test data"; CString* pNodeData = new CString; *pNodeData = val.c_ ...
- 《大型网站系统与JAVA中间件实践》读书笔记-数据访问层
数据访问层 5.1.2数据库垂直/水平拆分的困难 随着网站业务的快速发展,数据量和访问量不断上升,数据库的压力越来越大. 更换更好的硬件(Scale Up)是一种解决方案,而且在我们能付得起硬件费用并 ...
- Python3爬取王者官方网站英雄数据
爬取王者官方网站英雄数据 众所周知,王者荣耀已经成为众多人们喜爱的一款休闲娱乐手游,今天就利用python3 爬虫技术爬取官方网站上的几十个英雄的资料,包括官方给出的人物定位,英雄名称,技能名称,CD ...
- Python3.x:定时获取页面数据存入数据库
Python3.x:定时获取页面数据存入数据库 #间隔五分钟采集一次数据入库 import pymysql import urllib.request from bs4 import Beautifu ...
- HttpWebRequest 模拟网站登录获取数据
此文档仅仅是一个BaseCode,已做后续查阅 项目使用IBM Platform Symphony分布式平台,所有业务处理都在这个分布式平台上计算,需求是获取这些计算机机群的运行状态,和每一个服务的的 ...
- winpcap编程设置过滤器之指定获取某个网站的数据
下面,我将以 乱世隋唐页游 为例,通过编码获取这里面的数据. 游戏图: 我是乱世隋唐的网址是:www.917st.com 这个是官网网址的服务器地址. 42.62.0.14 我玩的游戏服是84区.网 ...
随机推荐
- PowerDesigner16 状态图
状态图(Statechart Diagram)主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Action). ...
- Different Integers(牛客多校第一场+莫队做法)
题目链接:https://www.nowcoder.com/acm/contest/139/J 题目: 题意:给你n个数,q次查询,对于每次查询得l,r,求1~l和r~n元素得种类. 莫队思路:1.将 ...
- MSSQL 基础知识001
数据库概述: DBMS(Database Management System,数据库管理系统)和数据库. 平时谈到“数据库”可能有两种含义:MSSQLServer.Oracle等某种DBMS:存放一堆 ...
- bzoj 1483 链表启发式合并
首先我们可以比较容易的在n的时间内算出来开始的答案,我们维护一些链表,分别表示不同的颜色,那么我们在计算答案的时候,只需要扫一遍所有的链表,判断链表相邻两项是否在序列中相邻,不相邻的话肯定在这其中的一 ...
- 【Python问题解决】关于解决python3.x无法使用PIL库的解决方法
因为PIL库目前只更新到python2.x,故python3.x直接安装PIL库会找不到版本.但是python3.x有一个新的库,可以提供和PIL差不多的功能,也就是pillow库. 本人使用的是py ...
- 【字符串处理算法】字符串包含的算法设计及C代码实现【转】
转自:http://blog.csdn.net/zhouzhaoxiong1227/article/details/50679587 版权声明:本文为博主原创文章,对文章内容有任何意见或建议,欢迎与作 ...
- 如何得知 kernel 或 android 已開機多久時間
adb shell cat /proc/uptime 中的第一個數字, adb shell cat "/proc/uptime" 210.79 312.76 或者是 kernel ...
- selenium.webdriver.common.keys 模块中常用的变量
表11-5 selenium.webdriver.common.keys 模块中常用的变量属性 含义Keys.DOWN, Keys.UP, Keys.LEFT,Keys.RIGHT 键盘箭头键Keys ...
- xcode 配置系统环境变量 Preporocessing 预编译宏的另一种写法, 系统的DEBUG 由来
在某些项目中看到一些环境变量类似宏的东西 比如叫ENVIRONMENT, 但发现还找不到具体这个宏是什么值, 那是因为他实在Preprocessing里配置了这个宏的值, 他能配置debug/rele ...
- Every Tom,Dick and Harry. 不管张三李四。
1 every adj 每个,最大的,所有的,一切的 Every other girl except me is wearing jeans. 除了我之外的每个女孩都穿着牛仔裤. I have ...