python数据抓取
1. 如何用python 爬虫抓取金融数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一。鉴于此,我拾起了Python这把利器,开启了网络爬虫之路。
本篇使用的版本为python3.5,意在抓取证券之星上当天所有A股数据。程序主要分为三个部分:网页源码的获取、所需内容的提取、所得结果的整理。
一、网页源码的获取
很多人喜欢用python爬虫的原因之一就是它容易上手。只需以下几行代码既可抓取大部分网页的源码。
为了减少干扰,我先用正则表达式从整个页面源码中匹配出以上的主体部分,然后从主体部分中匹配出每只股票的信息。代码如下。
pattern=re.compile('<tbody[sS]*</tbody>')
body=re.findall(pattern,str(content)) #匹配<tbody和</tbody>之间的所有代码pattern=re.compile('>(.*?)<')
stock_page=re.findall(pattern,body[0]) #匹配>和<之间的所有信息
其中compile方法为编译匹配模式,findall方法用此匹配模式去匹配出所需信息,并以列表的方式返回。正则表达式的语法还挺多的,下面我只罗列所用到符号的含义。
语法 说明
. 匹配任意除换行符“ ”外的字符
* 匹配前一个字符0次或无限次
? 匹配前一个字符0次或一次
s 空白字符:[<空格> fv]
S 非空白字符:[^s]
[...] 字符集,对应的位置可以是字符集中任意字符
(...) 被括起来的表达式将作为分组,里面一般为我们所需提取的内容
正则表达式的语法挺多的,也许有大牛只要一句正则表达式就可提取我想提取的内容。在提取股票主体部分代码时发现有人用xpath表达式提取显得更简洁一些,看来页面解析也有很长的一段路要走。
三、所得结果的整理
通过非贪婪模式(.*?)匹配>和<之间的所有数据,会匹配出一些空白字符出来,所以我们采用如下代码把空白字符移除。
stock_last=stock_total[:] #stock_total:匹配出的股票数据for data in stock_total: #stock_last:整理后的股票数据
if data=='':
stock_last.remove('')
最后,我们可以打印几列数据看下效果,代码如下
print('代码',' ','简称',' ',' ','最新价',' ','涨跌幅',' ','涨跌额',' ','5分钟涨幅')for i in range(0,len(stock_last),13): #网页总共有13列数据
print(stock_last[i],' ',stock_last[i+1],' ',' ',stock_last[i+2],' ',' ',stock_last[i+3],' ',' ',stock_last[i+4],' ',' ',stock_last[i+5])
2. python爬虫抓取数据的步骤
三步,用scrapy
定义item类
开发spider类
开发pipeline
3. 如何提取Python数据
首先是准备工作,导入需要使用的库,读取并创建数据表取名为loandata。
?
1
2
3
import numpy as np
import pandas as pd
loandata=pd.DataFrame(pd.read_excel('loan_data.xlsx'))
设置索引字段
在开始提取数据前,先将member_id列设置为索引字段。然后开始提取数据。
?
1
Loandata = loandata.set_index('member_id')
按行提取信息
第一步是按行提取数据,例如提取某个用户的信息。下面使用ix函数对member_id为1303503的用户信息进行了提取。
?
1
loandata.ix[1303503]
按列提取信息
第二步是按列提取数据,例如提取用户工作年限列的所有信息,下面是具体的代码和提取结果,显示了所有用户的工作年龄信息。
?
1
loandata.ix[:,'emp_length']
按行与列提取信息
第三步是按行和列提取信息,把前面两部的查询条件放在一起,查询特定用户的特定信息,下面是查询member_id为1303503的用户的emp_length信息。
?
1
loandata.ix[1303503,'emp_length']
在前面的基础上继续增加条件,增加一行同时查询两个特定用户的贷款金额信息。具体代码和查询结果如下。结果中分别列出了两个用户的代码金额。
?
1
loandata.ix[[1303503,1298717],'loan_amnt']
在前面的代码后增加sum函数,对结果进行求和,同样是查询两个特定用户的贷款进行,下面的结果中直接给出了贷款金额的汇总值。
?
1
loandata.ix[[1303503,1298717],'loan_amnt'].sum()
除了增加行的查询条件以外,还可以增加列的查询条件,下面的代码中查询了一个特定用户的贷款金额和年收入情况,结果中分别显示了这两个字段的结果。
?
1
loandata.ix[1303503,['loan_amnt','annual_inc']]
多个列的查询也可以进行求和计算,在前面的代码后增加sum函数,对这个用户的贷款金额和年收入两个字段求和,并显示出结果。
?
1
loandata.ix[1303503,['loan_amnt','annual_inc']].sum()
4. python数据抓取 怎样打印输出信息
给你一个例子,希望你可以理解,test3传递了输入给test1,test1输出了接收到的参数。
test1:
importsys
input=sys.stdin.read()
sys.stdout.write('Received:%s'%input)
test3:
importsubprocess
process=subprocess.Popen(['python','test1.py'],shell=False,stdin=subprocess.PIPE)
printprocess.communicate('Howareyou?')
领悟一下,获取process的输出你会的吧~
5. 如何用python抓取网页上的数据
使用内置的包来抓取,就是在模仿浏览器访问页面,再把页面的数据给解析出来,也可以看做是一次请求。
6. 如何利用python从数据库抓取数据
仅在里边定义连接字串,在使用的时候在创建对象,使用完对象就关闭
Config.asp:
Quote
<%
Dim Def_Sample
Def_Path=server.MapPath("data.mdb")
Def_Sample="DBQ="+Def_Path+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" '连接字串
%>
7. python提取数据,请问怎么提取{}里面的数据
这个有标准格式,你按"|"切割,再按“{”切割,就可以取到数据了。
8. python爬虫数据提取
理论上可以,实际要看目标网页的情况,反爬虫机制、js动态刷新抓取都是比较头疼的。
当然如果不考虑效率,selenium 之类的网页自动化方式,通常都可以实现。
9. Python爬虫常用的几种数据提取方式
数据解析方式
- 正则
- xpath
- bs4
数据解析的原理:
标签的定位
提取标签中存储的文本数据或者标签属性中存储的数据
10. 如何用python从网页上抓取数据
用Beautiful Soup这类解析模块: Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree); 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作