自己边看边实践一些简单的实际应用,下面的程序是从某个网站上获取需要的数据。

在编写的过程中,通过学习陆续了解到一些方法,发现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)的更多相关文章

  1. python3实践-从网站获取数据(Carbon Market Data-GD) (bs4/Beautifulsoup)

    结合个人需求,从某个网站获取一些数据,发现网页链接是隐藏的,需要通过浏览器看后面的代码来获取真实的链接. 下面这个案例,直接是从真实的链接中爬去数据. 此外,发现用pandas的read_html不能 ...

  2. Python Socket请求网站获取数据

     Python Socket请求网站获取数据 ---阻塞 I/O     ->收快递,快递如果不到,就干不了其他的活 ---非阻塞I/0 ->收快递,不断的去问,有没有送到,有没有送到,. ...

  3. ASP.NET Web API实践系列07,获取数据, 使用Ninject实现依赖倒置,使用Knockout实现页面元素和视图模型的双向绑定

    本篇接着上一篇"ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API",尝试获取数据. 在Models文件夹下创 ...

  4. CTreeItem保存和获取数据

    保存数据: std::string val = "test data"; CString* pNodeData = new CString; *pNodeData = val.c_ ...

  5. 《大型网站系统与JAVA中间件实践》读书笔记-数据访问层

    数据访问层 5.1.2数据库垂直/水平拆分的困难 随着网站业务的快速发展,数据量和访问量不断上升,数据库的压力越来越大. 更换更好的硬件(Scale Up)是一种解决方案,而且在我们能付得起硬件费用并 ...

  6. Python3爬取王者官方网站英雄数据

    爬取王者官方网站英雄数据 众所周知,王者荣耀已经成为众多人们喜爱的一款休闲娱乐手游,今天就利用python3 爬虫技术爬取官方网站上的几十个英雄的资料,包括官方给出的人物定位,英雄名称,技能名称,CD ...

  7. Python3.x:定时获取页面数据存入数据库

    Python3.x:定时获取页面数据存入数据库 #间隔五分钟采集一次数据入库 import pymysql import urllib.request from bs4 import Beautifu ...

  8. HttpWebRequest 模拟网站登录获取数据

    此文档仅仅是一个BaseCode,已做后续查阅 项目使用IBM Platform Symphony分布式平台,所有业务处理都在这个分布式平台上计算,需求是获取这些计算机机群的运行状态,和每一个服务的的 ...

  9. winpcap编程设置过滤器之指定获取某个网站的数据

    下面,我将以 乱世隋唐页游 为例,通过编码获取这里面的数据. 游戏图: 我是乱世隋唐的网址是:www.917st.com 这个是官网网址的服务器地址.  42.62.0.14 我玩的游戏服是84区.网 ...

随机推荐

  1. iOS 时间转换

    #pragma mark - 获取当前时间戳 -(NSString *)getTimeSp{ NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:]; ...

  2. C语言数据库-二叉树

    一.定义 二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于3.有根二叉树还要满足根结点的度不大于2.有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点.然而,没 ...

  3. Sass 条件-循环语句

    学习Sass中 @if...@else @for @while @each 一.条件判断 - @if @else 示例: @mixin blockOrHidden($boolean:true){ @i ...

  4. 简单的异步HTTP服务端和客户端

    /// <summary> /// 异步Http服务器 /// </summary> class AsyncHttpServer { readonly HttpListener ...

  5. GitLab 迁移与升级

    参考: [ 博客园 BigBao ] 环境说明: OS: CentOS 7.x gitlab-ce 初始版本: 8.8.5 gitlab-ce 升级到版本: 11.2.3 升级方式: rpm 安装升级 ...

  6. 使用abp的 redis cache

    top 使用abp的 redis cache -1. 在微软维护的github项目的release里找到redis的windows版本 64位 大约5M,安装,安装,然后在安装目录找到redis.wi ...

  7. eCharts_基于eCharts开发的一个多图表页面

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. spring cloud ribbon 断路器

    @EnableDiscoveryClient @SpringBootApplication @EnableCircuitBreaker //开启断路器 public class ConsumerMov ...

  9. device tree --- #interrupt-cells property

    device tree source Example1 interrupt-controller@e000e100 { ... ... #interrupt-cells = <0x1>; ...

  10. sicily 1016. 排队接水--课程作业

                                                                                    1016. 排队接水 Time Limi ...