python爬取知乎live_python爬虫——xml数据爬取

回想去年写毕业论文时候需要数据,虽然数据量不大,但是手工录入,也是颇费眼神。现在自学了Python,就拿曾经的需求当做案例吧!

爬取目标:最近20年每个月的仔猪价格,生猪价格和猪肉价格

爬取软件:python 3.7.2 IDE:PyCharm

爬取包:requests, pandas ,lxml, time

打开如下部分:

打开检查,如下图

很好,数据就在最后的大红框里面,分别对应着时间和价格。有前端基础一眼就能看出这是一个xml文档.html为树结构,xml也是树结构,因此我们可以像解析html一样解析xml。到这里我们就可以爬取仔猪价格数据了。

还有生猪价格和猪肉价格没爬取呢,别急,看一下网址构造:

发现这个链接变化之处有两个地方,因此可以构建一个dict以构造多个URL。循环每个URL,请求,解析,存储为bj_prok.xlsx

pigdata ={'smallpig':1565318072807,'livepig':1565327925160,'pork':1565328013572}

最终爬取效果(展示部分):

全部代码如下:

import requests

from lxml import etree

import pandas as pd

import time

#构造字典

pigdata ={'smallpig':1565318072807,'livepig':1565327925160,'pork':1565328013572}

#构造函数get_info,解析网页

def get_info(link):

#请求url

res = requests.get(url)

#转换类型

html = etree.HTML(res.text)

#解析属性值,用@属性

date = html.xpath('//*[@name="2000"]/point/@name')

prices = html.xpath('//*[@name="2000"]/point/@y')

#返回日期和价格

return date,prices

i=1

#遍历字典pigdata,同时遍历键和值

for pigtype,pignum in pigdata.items():

#构造url

url = 'http://www.caaa.cn/market/trend/local/xml/2-1-{type}.xml?&XMLCallDate={num}'.format(type=pigtype,num=pignum)

# print(url)

#调用函数get_info

pigs = get_info(url)

if i ==1:

small_pig = pd.DataFrame({'时间': pigs[0], '仔猪价格(元/千克)': pigs[1]}, index=range(1, len(pigs[0]) + 1))

elif i==2:

live_pig = pd.DataFrame({'活猪价格(元/千克)': pigs[1]}, index=range(1, len(pigs[0]) + 1))

else:

pig = pd.DataFrame({'猪肉价格(元/千克)': pigs[1]}, index=range(1, len(pigs[0]) + 1))

i+=1

#控制循环时间,3秒循环一次

time.sleep(3)

#pandas合并DataFrame

pork = pd.concat([small_pig,live_pig,pig],axis=1)

print(pork)

#存储到硬盘

pork.to_excel('bj_pork.xlsx')

谢谢大家,请多指教!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

after不显示_web前端入门到实战:css实现单行、多行文本超出显示省略号

前言:项目中我们经常遇到这种需求,需要对单行、多行文本超出显示为省略号。这篇文章主要总结了小编解决此问题的方法,有不足之处欢迎大家指正。单行文本省略.ellipsis-line {border: 1px solid #f70505;padding: 8px;width: 400px;overflow: …

linux下查看内存使用情况

基本内存术语解读 1> free -m 同样是做为缓存,buffers和cache又有啥区别呢? 于是又查了些资料,发现buffers实际应该是叫“缓冲”,其英文解释是:A buffer is something that has yet to be "written" to d…

redistemplate使用_如何使用 SpringBoot + Redis 优雅的解决接口幂等性问题

# 前言在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重复处理。如何…

python 创建类_python 用type()创建类

type()可以查看一个类型,也可以查看变量的类型class Hello1(object):def hello(self, name world):print(Hello, %s % name)h1 Hello1()h1.hello()print(type(Hello1))print(type(h1))输出:Hello, world#Hello是一个class, 它的类型就是typ…

关于c语言中如何四舍五入(圆整)的问题!

关于c语言中如何四舍五入(圆整)的问题! 在c语言中,用70.0/6得到的值赋给一个浮点变量,只会得到11.666667(因为浮点型只留下小数点后六位),而如果我们想输出结果的约数,必须要对结果进行四舍五入. 一般来说,在c语言中,如果想要对一个结果进行四舍五入,我们通常会先将需要圆整的…

图像的灰度级和动态范围(转)

学习笔记(一)——图像的灰度级和动态范围转载于:https://www.cnblogs.com/LittleTiger/p/9359712.html

jdbctemplate 开启事务_SpringBoot 系列教程之事务隔离级别知识点小结

上一篇博文介绍了声明式事务Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上,并通过实例演示不同的事务隔离级别下,脏读、不可重复读、幻读的具体场景I. 基础知识在进入…

东风小康为什么是dfsk_助力地摊经济瑞驰纯电动物流车和东风小康微型货车厚积薄发...

核心提示:小康集团旗下瑞驰纯电动物流车及东风小康微型货车深耕多年,其中瑞驰纯电动物流车2015年上市,连续多年销量位列中国行业第一。近日,地摊经济成为热门,疫情常态化下,地摊经济、小店经济对于快速恢复…

链表中删除选定结点的优雅操作!

一般我们在进行单向链表链表的结点删除操作时,都是通过相应的结构体指针进行链表的遍历,然后找 到需要删除的节点,为了完成删除操作,我们需要在寻找该节点时,不断地记录下这个节点前面的节点 (prev),来保证当特定结点被删除后,我们还可以将断开的链表重新连起来,下面给出一段…

python抢货程序_Python自动化xpath实现自动抢票抢货代码示例

本篇文章小编给大家分享一下Python自动化xpath实现自动抢票抢货代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。 总代码: for i in range(51,56): driver.imp…

Ubuntu安装pycharm并且激活

下载pycharm: https://www.jetbrains.com/pycharm/download/#sectionlinux 选择专业版下载,然后提取,也就是解压 进入解压后目录,再进入bin目录,打开终端执行命令 ./pycharm.sh pycharm就启动了 激活Pycharm: 编辑hosts文件&am…

二阶矩阵转置怎么求_矩阵求导术(下)

点击上方“Datawhale”,选择“星标”公众号第一时间获取价值内容本文承接上篇 https://zhuanlan.zhihu.com/p/24709748,来讲矩阵对矩阵的求导术。使用小写字母x表示标量,粗体小写字母表示列向量,大写字母X表示矩阵。矩阵对矩阵的求…

洛谷-DFS-1019-单词接龙-个人AC题解和公共AC题解笔记

学习内容: 预处理万能头文件string的使用 话不多说,直奔主题 本人AC代码 #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MAXN 21 #define MAXLENGTH 21 int n; int length,max_length; char words[MAXN][MAXLEN…

c语言中x的n次方怎么表示_线性代数的本质及其在人工智能中的应用

线性代数是 AI 专家必须掌握的知识&#xff0c;这已不再是个秘密。如果不掌握应用数学这个领域&#xff0c;你永远就只能是「门外汉」。当然&#xff0c;学习线性代数道阻且长。数学&#xff0c;尤其是线性代数常与枯燥、复杂和毫无意义的事物联系起来。不过你还可以另辟蹊径。…

js之箭头函数

原文 ES6标准新增了一种新的函数&#xff1a;Arrow Function&#xff08;箭头函数&#xff09;。 为什么叫Arrow Function&#xff1f;因为它的定义用的就是一个箭头&#xff1a; x > x * x 上面的箭头函数相当于&#xff1a; function (x) {return x * x; } 箭头函数相当于…

android开发蓝牙是否可见开关_如何从后台开启android蓝牙的可见性以及始终保持可见性...

最近工作中遇到一个特殊的需求&#xff0c;要求代码能够从后台开机android手机蓝牙的可见性。而framework提供了一种打开可见性的操作&#xff0c;就是通过向用户弹出一个提示框&#xff0c;来询问是否允许开启可见性。而且限制了最长时间为300秒&#xff0c;代码如下&#xff…

洛谷-DFS-1101-单词方阵-个人AC题解及公共题解的笔记

先上自己AC代码(博主这个代码修改过多次,只因代码长度过长) #include<bits/stdc.h> using namespace std; #define MAXN 102 int flag; int n; int next1[8][2]{{1,0},{0,1},{-1,0},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}}; char map1[MAXN][MAXN],map2[MAXN][MAXN]; cons…

django 实现电子支付功能

思路&#xff1a;调用第三方支付 API 接口实现支付功能。本来想用支付宝来实现第三方网站的支付功能的&#xff0c;但是在实际操作中发现支付宝没有 Python 接口&#xff0c;网上虽然有他人二次封装的的 Python 接口&#xff0c;但是对我这个小白白来说上手还是有点难度&#x…

android中怎么保存checkbox中的checked属性_第二十四天HTML中的form表单

form表单用于收集用户信息&#xff0c;如&#xff1a;登录、注册等场景&#xff1b;所有要提交的数据都必须放在form标签中action&#xff1a;提交地址、动作&#xff0c;与input标签中typy标签的submit属性相关联。 &#xff0c;提交地址是action的地址method:提交方法&#x…

Python中曲率与弯曲的转换_1000R曲率更具沉浸感!三星T55曲面显示器评测

在曲面屏的设计上&#xff0c;三星一直在突破极限&#xff0c;比如在2017年推出的49英寸超宽带鱼屏C49HG90&#xff0c;引来众人围观&#xff0c;非常震撼。而在曲率方面&#xff0c;我们常见的有1800R和1500R&#xff0c;但是三星并不满足&#xff0c;于日前推出了一款曲率达到…