东方财富网cpi数据的抓取【Python】

东方财富网cpi数据的抓取

1、使用:

  • lxml.etree
  • requests

2、代码:

from lxml import etree
import requests

url = 'http://data.eastmoney.com/cjsj/cpi.html'
content = requests.get(url).content

html = etree.HTML(content)
content1 = html.xpath('//*[@id="tb"]/tr[3]/td[2]/text()')

print(content1[0].strip().replace('\n\r', ''))

# for txt in html.iterfind('.//*[@id="tb"]/tr[3]/td'):
#     print(txt.text)

3、分析:requests+lxml来分析和提取数据比较简单,可以尽可能的规避使用RE的复杂性以及可能产生的编码问题。要注意的是提取文本内容的时候要在xpath地址后面加上/text()
不过这个案例中,需要把xpath的/tbody去掉,这是因为有的浏览器加上去的,否则不能识别需要的文字部分。
另外,默认的结果因为有很多的空格和\n\r,所以需要做数据清洗,就本例,加一句content1[0].strip().replace(‘\n\r’, ‘’)即可。

4、没有执行的代码,表示读取2016年08月份 “全国”,“城市”,“农村”各自的cpi数据。
要注意的是:这属于ElementPath,一共4个种类,分别如下:

  1. iterfind()
  2. findall()
  3. find()
  4. findtext()

千万注意的是:ElementPath不能直接使用绝对路径,需要在前面加一个.符号。暂时感觉这个使用的不太多。