當前位置:首頁 » 編程語言 » python數據抓取

python數據抓取

發布時間: 2022-01-08 17:29:11

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

  1. 定義item類

  2. 開發spider類

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

熱點內容
安卓機怎麼關閉主題 發布:2024-12-26 21:55:57 瀏覽:912
javafor線程 發布:2024-12-26 21:54:35 瀏覽:740
python自定義模塊 發布:2024-12-26 21:41:37 瀏覽:54
linux安裝mysqltar 發布:2024-12-26 21:18:02 瀏覽:314
瀏覽器的java支持 發布:2024-12-26 21:15:45 瀏覽:652
電商高管如何配置 發布:2024-12-26 21:13:48 瀏覽:706
批發的演算法 發布:2024-12-26 21:13:46 瀏覽:205
安卓手機在日本下載哪個導航 發布:2024-12-26 21:09:32 瀏覽:557
白雜訊加密 發布:2024-12-26 20:31:02 瀏覽:638
怎麼防止電腦刪除腳本 發布:2024-12-26 20:19:19 瀏覽:150