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),搜索以及修改剖析樹的操作