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

python爬取數據

發布時間: 2022-01-10 15:06:18

『壹』 python爬取的數據如何去重說一下具體的演算法依據

要具體問題具體分析的。看你要抓取什麼數據。
最好能找到一個能夠作為重復性區分的欄位值。比如網路知道的所有提問,每個問題都有一個對應的id,樓主這個問題對應的id就是181730605611341844。那在爬取的過程中,可以將所有已經爬取的問題id保存在一個set()中,如果即將爬取的問題id已經存在了,那就跳過,反之則繼續。
不知道樓主用的是什麼資料庫,在資料庫設計中,也可以添加一些約束條件作為約束,保證數據的唯一性。

『貳』 如何用python爬取nba數據中心的數據

爬取的網站為:stat-nba.com,本文爬取的是NBA2016-2017賽季常規賽至2017年1月7日的數據

改變url_header和url_tail即可爬取特定的其他數據。

源代碼如下:

[python]view plain

  • #coding=utf-8

  • importsys

  • reload(sys)

  • sys.setdefaultencoding('utf-8')

  • importrequests

  • importtime

  • importurllib

  • frombs4importBeautifulSoup

  • importre

  • frompyExceleratorimport*

  • defgetURLLists(url_header,url_tail,pages):

  • """

  • 獲取所有頁面的URL列表

  • """

  • url_lists=[]

  • url_0=url_header+'0'+url_tail

  • printurl_0

  • url_lists.append(url_0)

  • foriinrange(1,pages+1):

  • url_temp=url_header+str(i)+url_tail

  • url_lists.append(url_temp)

  • returnurl_lists

  • defgetNBAAllData(url_lists):

  • """

  • 獲取所有2017賽季NBA常規賽數據

  • """

  • datasets=['']

  • foriteminurl_lists:

  • data1=getNBASingleData(item)

  • datasets.extend(data1)

  • #去掉數據里的空元素

  • foritemindatasets[:]:

  • iflen(item)==0:

  • datasets.remove(item)

  • returndatasets

  • defgetNBASingleData(url):

  • """

  • 獲取1個頁面NBA常規賽數據

  • """

  • QueryType=game&order=1&crtcol=date_out&GameType=season&PageNum=3000&Season0=2016&Season1=2017'

  • #html=requests.get(url).text

  • html=urllib.urlopen(url).read()

  • #printhtml

  • soup=BeautifulSoup(html)

  • data=soup.html.body.find('tbody').text

  • list_data=data.split(' ')

  • #withopen('nba_data.txt','a')asfp:

  • #fp.write(data)

  • #foriteminlist_data[:]:

  • #iflen(item)==0:

  • #list_data.remove(item)

  • returnlist_data

  • defsaveDataToExcel(datasets,sheetname,filename):

  • book=Workbook()

  • sheet=book.add_sheet(sheetname)

  • sheet.write(0,0,u'序號')

  • sheet.write(0,1,u'球隊')

  • sheet.write(0,2,u'時間')

  • sheet.write(0,3,u'結果')

  • sheet.write(0,4,u'主客')

  • sheet.write(0,5,u'比賽')

  • sheet.write(0,6,u'投籃命中率')

  • sheet.write(0,7,u'命中數')

  • sheet.write(0,8,u'出手數')

  • sheet.write(0,9,u'三分命中率')

  • sheet.write(0,10,u'三分命中數')

  • sheet.write(0,11,u'三分出手數')

  • sheet.write(0,12,u'罰球命中率')

  • sheet.write(0,13,u'罰球命中數')

  • sheet.write(0,14,u'罰球出手數')

  • sheet.write(0,15,u'籃板')

  • sheet.write(0,16,u'前場籃板')

  • sheet.write(0,17,u'後場籃板')

  • sheet.write(0,18,u'助攻')

  • sheet.write(0,19,u'搶斷')

  • sheet.write(0,20,u'蓋帽')

  • sheet.write(0,21,u'失誤')

  • sheet.write(0,22,u'犯規')

  • sheet.write(0,23,u'得分')

  • num=24

  • row_cnt=0

  • data_cnt=0

  • data_len=len(datasets)

  • print'data_len:',data_len

  • while(data_cnt<data_len):

  • row_cnt+=1

  • print'序號:',row_cnt

  • forcolinrange(num):

  • #printcol

  • sheet.write(row_cnt,col,datasets[data_cnt])

  • data_cnt+=1

  • book.save(filename)

  • defwriteDataToTxt(datasets):

  • fp=open('nba_data.txt','w')

  • line_cnt=1

  • foriinrange(len(datasets)-1):

  • #球隊名稱對齊的操作:如果球隊名字過短或者為76人隊是球隊名字後面加兩個table否則加1個table

  • ifline_cnt%24==2andlen(datasets[i])<5ordatasets[i]==u'費城76人':

  • fp.write(datasets[i]+' ')

  • else:

  • fp.write(datasets[i]+' ')

  • line_cnt+=1

  • ifline_cnt%24==1:

  • fp.write(' ')

  • fp.close()

  • if__name__=="__main__":

  • pages=int(1132/150)

  • url_header='hp?page='

  • url_tail='&QueryType=game&order=1&crtcol=date_out&GameType=season&PageNum=3000&Season0=2016&Season1=2017#label_show_result'

  • url_lists=getURLLists(url_header,url_tail,pages)

  • datasets=getNBAAllData(url_lists)

  • writeDataToTxt(datasets)

  • sheetname='nbanormaldata2016-2017'

  • str_time=time.strftime('%Y-%m-%d',time.localtime(time.time()))

  • filename='nba_normal_data'+str_time+'.xls'

  • saveDataToExcel(datasets,sheetname,filename)



『叄』 Python 最簡單爬蟲爬取數據(一):如何請求

import requests

url=『http://www..com』
r = requests.get(url,timeout=10)
r.raise_for_status()
r.encoding = r.apparent_encoding
print( r.text)

『肆』 怎麼使用python爬取百度網的數據

檔案系統初期算是告一段落了,利用一點時間繼續爬取POI。和領導聊聊,受益匪淺。之前我的想法是爬取一份poi數據,直接能用;而領導聽了之後,覺得更好的方式是爬取多個渠道來源的POI數據,然後做一個數據比較融合(最終事情能不能成不好說,但是經過這么一回,細節技術上有所提高,宏觀把控整體項目流程能力有所長進,更重要的是通過和能人交流,以更高的眼界更宏觀的看待數據、應用以及問題,這就是成長)。 我之前採用的方式,可以滿足需求,但是POI數據獲取效率差一些(雖然已經很快,但是相比本文這種還是慢一些)、數據現勢性不好,高德數據和網路數據雖然是兩套,但是僅僅是坐標不同(所以顯然還是一套)。所以,我加一種方式來爬取網路poi。
一 調研: 網路API提供了一個叫Place API獲取poi的介面,有個城市內檢索 實例為

ce/v2/search?query=銀行&page_size=10&page_num=0&scope=1®ion=北京&output=json&ak={您的密鑰}
它返回的是個json類型數據,一個區域最大返回數為400,每頁最大返回數為20。顯然一個城市內不管什麼類別的poi,不可能只有400個,會遺漏數據,故捨去

還有一個矩形區域檢索,實例為
u.com/place/v2/search?query=美食&page_size=10&page_num=0&scope=1&bounds=39.915,116.404,39.975,116.414&output=json&ak={您的密鑰}只要區域劃分得當,這個可以使用
二 要解決的問題
1 區域劃分
網上有人通過遞歸寫代碼的方式來劃分,這樣劃分有問題,第一,劃分的區域不能完全對應一個城市的市區;第二,演算法設計比較麻煩。解決辦法,後面詳細說。
2 類別問題
網路API的介面必須要指定query的類別,那麼如果類別指定不準,或者類別不全,根本無法完成爬取一個城市所有poi的任務。解決辦法,說實話,這個問題在我做這件事情的時候,
十分棘手,不過我最終找到了這個網頁
/index.php?title=lbscloud/poitags,一切都不是問題了
三 整體流程
1 區域劃分,2km*2km的區域基本可以滿足需求,獲取每個區域的對角坐標(經緯度),逐行寫入一個txt文本里
2 爬蟲程序編寫 讀取1中的txt文本,逐行循環;調用網路API介面,爬取json;將爬取的數據存入資料庫中; 每個類別跑一次程序
3 爬下的POI數據處理 poi顯示,投影坐標轉換,與地圖疊加

後文將詳細介紹流程

『伍』 怎麼用python爬取相關數據

以下代碼運行通過:

importrequests
frombs4importBeautifulSoup
importos


headers={
'User-Agent':"Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.1(KHTML,likeGecko)"
"Chrome/22.0.1207.1Safari/537.1"}
##瀏覽器請求頭(大部分網站沒有這個請求頭會報錯)
all_url='http://www.mzitu.com/all'
start_html=requests.get(all_url,headers=headers)
##使用requests中的get方法來獲取all_url的內容headers為請求頭
print(start_html.text)
##列印start_html
##concent是二進制的數據,下載圖片、視頻、音頻、等多媒體內容時使用concent
##列印網頁內容時使用text

運行效果:

『陸』 python 爬取的數據導出到excel

把print出來的,都存到一個list里。
all_case=['姓名','張三','年齡','18'...]
b=[]
x=0
y=0
for i in range(0,len(all_case),2):
b = all_case[i:i+2]
for i in b:

ws.write(x,y,i,style)

x+=1
y+=1

x=0

wtbook.save(path_dst)

上面是核心內容,你理解一下。就是將list變為2個元素一組的小list,然後對小list按行寫入,寫完到下一個小list再回到第一行。
寫完發現沒有格式啊。。。注意一下x+=1和裡面for是一組。y+=1和x=0和外面的for是一組。

『柒』 python爬數據

withopen('文本文檔(1)','r')asfin:
withopen('文本文檔(2)','w')asfout:
forlineinfin:
if'food'inline:
fout.write(line)

『捌』 python爬蟲數據提取

理論上可以,實際要看目標網頁的情況,反爬蟲機制、js動態刷新抓取都是比較頭疼的。
當然如果不考慮效率,selenium 之類的網頁自動化方式,通常都可以實現。

『玖』 python爬蟲爬取的數據可以做什麼

爬蟲的概念是,爬取網上能看到的數據,也就是只要網上存在的,通過瀏覽器可以看到的數據。爬蟲都可以爬取。爬蟲爬取的原理就是偽裝成瀏覽器,然後進行爬取操作

哪些數據你需要你就可以爬取。比如爬取公司競爭對手的商業數據,爬取電影,音樂,圖片等等的。只要你希望得到的,前提瀏覽器可以訪問的都可以爬取

熱點內容
上網的賬號和密碼是什麼東西 發布:2024-09-20 16:31:31 瀏覽:611
安卓手機王者榮耀如何調超高視距 發布:2024-09-20 16:31:30 瀏覽:427
安卓G是什麼app 發布:2024-09-20 16:23:09 瀏覽:80
iphone怎麼壓縮文件 發布:2024-09-20 16:08:18 瀏覽:355
linux查看用戶名密碼是什麼 發布:2024-09-20 16:03:20 瀏覽:743
mac執行python腳本 發布:2024-09-20 15:58:52 瀏覽:777
單片機android 發布:2024-09-20 09:07:24 瀏覽:765
如何提高三星a7安卓版本 發布:2024-09-20 08:42:35 瀏覽:664
如何更換伺服器網站 發布:2024-09-20 08:42:34 瀏覽:311
子彈演算法 發布:2024-09-20 08:41:55 瀏覽:289