东方财富网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个种类,分别如下:
- iterfind()
- findall()
- find()
- findtext()
千万注意的是:ElementPath不能直接使用绝对路径,需要在前面加一个.符号。暂时感觉这个使用的不太多。