導航:首頁 > 數據處理 > python如何爬取交通數據

python如何爬取交通數據

發布時間:2024-10-05 09:15:56

⑴ 濡備綍鐢╬ython鐖鍙栫綉絝欐暟鎹

鐢╬ython鐖鍙栫綉絝欐暟鎹鏂規硶姝ラゅ備笅錛

1.棣栧厛瑕佹槑紜鎯寵佺埇鍙栫殑鐩鏍囥傚逛簬緗戦〉婧愪俊鎮鐨勭埇鍙栭栧厛瑕佽幏鍙杣rl,鐒跺悗瀹氫綅鐨勭洰鏍囧唴瀹廣

2.鍏堜嬌鐢ㄥ熀紜for寰鐜鐢熸垚鐨剈rl淇℃伅銆

3.鐒跺悗闇瑕佹ā鎷熸祻瑙堝櫒鐨勮鋒眰(浣跨敤request.get(url)),鑾峰彇鐩鏍囩綉欏電殑婧愪唬鐮佷俊鎮(req.text)銆

4.鐩鏍囦俊鎮灝卞湪婧愪唬鐮佷腑,涓轟簡綆鍗曠殑鑾峰彇鐩鏍囦俊鎮闇瑕佺敤Beautifulsoup搴撳規簮浠g爜榪涜岃В鏋愶紝鍥犱負鏄痟tml淇℃伅錛岄噰鐢╤tml.parser鐨勬柟寮忚繘琛岃В鏋愩

5.闅忓悗瑕佸湪婧愮綉欏典腑榪涗竴姝ュ畾浣嶇洰鏍囦俊鎮鍦ㄧ綉欏墊簮浠g爜涓鐨勪綅緗錛氬湪緗戦〉涓璅12閿錛屾煡鐪嬪厓緔犱俊鎮錛屼嬌鐢ㄥ乏涓婅掔殑鎸夐挳榪涗竴姝ユ煡鐪嬬洰鏍囦俊鎮浣嶇疆銆

6.浣跨敤beautifululsoup榪涗竴姝ュ畾浣嶆簮浠g爜淇℃伅銆

7.鏈鍚庝嬌鐢ㄥ驚鐜鍙栧嚭鍗曚釜鍏冪礌淇℃伅銆傞栧厛鍒嗘瀽鍗曚釜淇℃伅鐨勪綅緗錛氬畠鍦╱l鍒楄〃涓嬶紝浣跨敤寰鐜鍙栧嚭鐒跺悗瀹氫綅鍗曚釜鍏冪礌涓淇℃伅鐨勪綅緗錛屽苟鍙栧嚭淇℃伅銆

8.鏈緇堝氨寰楀埌鐩鏍囦俊鎮鍒楄〃浜嗐

⑵ python可以爬取什麼數據

一、爬取我們所需要的一線鏈接
channel_extract.py
這里的一線鏈接也就是我們所說的大類鏈接:
from bs4 import BeautifulSoupimport requests

start_url = 'http://lz.ganji.com/wu/'host_url = 'http://lz.ganji.com/'def get_channel_urls(url):
wb_data = requests.get(url)
soup = BeautifulSoup(wb_data.text, 'lxml')
links = soup.select('.fenlei > dt > a') #print(links)
for link in links:
page_url = host_url + link.get('href')
print(page_url)#get_channel_urls(start_url)channel_urls = '''
http://lz.ganji.com/jiaju/
http://lz.ganji.com/rironghuo/
http://lz.ganji.com/shouji/
http://lz.ganji.com/bangong/
http://lz.ganji.com/nongyongpin/
http://lz.ganji.com/jiadian/
http://lz.ganji.com/ershoubijibendiannao/
http://lz.ganji.com/ruanjiantushu/
http://lz.ganji.com/yingyouyunfu/尺毀滲
http://lz.ganji.com/diannao/
http://lz.ganji.com/xianlipin/
http://lz.ganji.com/fushixiaobaxuemao/
http://lz.ganji.com/meironghuazhuang/
http://lz.ganji.com/shuma/
http://lz.ganji.com/laonianyongpin/
http://lz.ganji.com/xuniwupin/
'''

那麼拿我爬取的58同城為例就是余舉爬取了二手市場所有品類的鏈接,也就是我說的大類鏈接;
找到這些鏈接的共同特徵,用函數將其輸出,並作為多行文本儲存起來。
二、獲取陵脊我們所需要的詳情頁面的鏈接和詳情信息
page_parsing.py
1、說說我們的資料庫
先看代碼:
#引入庫文件from bs4 import BeautifulSoupimport requestsimport pymongo #python操作MongoDB的庫import reimport time#鏈接和建立資料庫client = pymongo.MongoClient('localhost', 27017)
ceshi = client['ceshi'] #建ceshi資料庫ganji_url_list = ceshi['ganji_url_list'] #建立表文件ganji_url_info = ceshi['ganji_url_info']123456789101112

2、判斷頁面結構是否和我們想要的頁面結構相匹配,比如有時候會有404頁面;
3、從頁面中提取我們想要的鏈接,也就是每個詳情頁面的鏈接;
這里我們要說的是一個方法就是:
item_link = link.get('href').split('?')[0]12

這里的這個link什麼類型的,這個get方法又是什麼鬼?
後來我發現了這個類型是
<class 'bs4.element.Tab>1

如果我們想要單獨獲取某個屬性,可以這樣,例如我們獲取它的 class 叫什麼
print soup.p['class']
#['title']12

還可以這樣,利用get方法,傳入屬性的名稱,二者是等價的
print soup.p.get('class')#['title']12

下面我來貼上代碼:
#爬取所有商品的詳情頁面鏈接:def get_type_links(channel, num):
list_view = '{0}o{1}/'.format(channel, str(num)) #print(list_view)
wb_data = requests.get(list_view)
soup = BeautifulSoup(wb_data.text, 'lxml')
linkOn = soup.select('.pageBox') #判斷是否為我們所需頁面的標志;
#如果爬下來的select鏈接為這樣:div.pageBox > ul > li:nth-child(1) > a > span 這里的:nth-child(1)要刪掉
#print(linkOn)
if linkOn:
link = soup.select('.zz > .zz-til > a')
link_2 = soup.select('.js-item > a')
link = link + link_2 #print(len(link))
for linkc in link:
linkc = linkc.get('href')
ganji_url_list.insert_one({'url': linkc})
print(linkc) else:

4、爬取詳情頁中我們所需要的信息
我來貼一段代碼:
#爬取趕集網詳情頁鏈接:def get_url_info_ganji(url):
time.sleep(1)
wb_data = requests.get(url)
soup = BeautifulSoup(wb_data.text, 'lxml') try:
title = soup.select('head > title')[0].text
timec = soup.select('.pr-5')[0].text.strip()
type = soup.select('.det-infor > li > span > a')[0].text
price = soup.select('.det-infor > li > i')[0].text
place = soup.select('.det-infor > li > a')[1:]
placeb = [] for placec in place:
placeb.append(placec.text)
tag = soup.select('.second-dt-bewrite > ul > li')[0].text
tag = ''.join(tag.split()) #print(time.split())
data = { 'url' : url, 'title' : title, 'time' : timec.split(), 'type' : type, 'price' : price, 'place' : placeb, 'new' : tag
}
ganji_url_info.insert_one(data) #向資料庫中插入一條數據;
print(data) except IndexError: 21222324252627282930

四、我們的主函數怎麼寫?
main.py
看代碼:
#先從別的文件中引入函數和數據:from multiprocessing import Poolfrom page_parsing import get_type_links,get_url_info_ganji,ganji_url_listfrom channel_extract import channel_urls#爬取所有鏈接的函數:def get_all_links_from(channel):
for i in range(1,100):
get_type_links(channel,i)#後執行這個函數用來爬取所有詳情頁的文件:if __name__ == '__main__':# pool = Pool()# # pool = Pool()# pool.map(get_url_info_ganji, [url['url'] for url in ganji_url_list.find()])# pool.close()# pool.join()#先執行下面的這個函數,用來爬取所有的鏈接:if __name__ == '__main__':
pool = Pool()
pool = Pool()
pool.map(get_all_links_from,channel_urls.split())
pool.close()
pool.join()

五、計數程序
count.py
用來顯示爬取數據的數目;
import timefrom page_parsing import ganji_url_list,ganji_url_infowhile True: # print(ganji_url_list.find().count())
# time.sleep(5)
print(ganji_url_info.find().count())
time.sleep(5)

⑶ python網路爬蟲可以幹啥

《Python3爬蟲入門到精通課程視頻【附軟體與資料】【34課時】--崔慶才》網路網盤資源免費下載

鏈接:https://pan..com/s/1PM2MA-3Ba03Lcs2N_Xa1Rw

?pwd=zxcv 提取碼:zxcv

Python3爬蟲入門到精通課程視頻【附軟體與資料】【34課時】--崔慶才|章節5: 分布式篇|章節4: 框架篇|章節3: 實戰篇|章節2: 基礎篇|章節1: 環境配置|Python3爬蟲課程資料代碼.zip|2018-Python3網路爬蟲開發實戰-崔慶才.pdf|課時06:Python爬蟲常用庫的安裝.zip|課時05:Python多版本共存配置.zip|課時04:MySQL的安裝.zip|課時03:Redis環境配置.zip|課時02:MongoDB環境配置.zip|課時01:Python3+Pip環境配置.zip|課時13:Selenium詳解.zip

⑷ 如何用Python爬取數據

方法/步驟

⑸ python怎麼爬取數據


在學習python的過程中,學會獲取網站的內容是我們必須要掌握的知識和技能,今天就分享一下爬蟲的基本流程,只有了解了過程,我們再慢慢一步步的去掌握它所包含的知識
Python網路爬蟲大概需要以下幾個步驟:
一、獲取網站的地址
有些網站的網址十分的好獲取,顯而易見,但是有些網址需要我們在瀏覽器中經過分析得出
二、獲取網站的地址
有些網站的網址十分的好獲取,顯而易見,但是有些網址需要我們在瀏覽器中經過分析得出
三、請求 url
主要是為了獲取我們所需求的網址的源碼,便於我們獲取數據
四、獲取響應
獲取響應是十分重要的, 我們只有獲取了響應才可以對網站的內容進行提取,必要的時候我們需要通過登錄網址來獲取cookie 來進行模擬登錄操作
五、獲取源碼中的指定的數據
這就是我們所說的需求的數據內容,一個網址裡面的內容多且雜,我們需要將我們需要的信息獲取到,我目前主要用到的方法有3個分別是re(正則表達式) xpath 和 bs.4
六、處理數據和使數據美化
當我們將數據獲取到了,有些數據會十分的雜亂,有許多必須要的空格和一些標簽等,這時我們要將數據中的不需要的東西給去掉
七、保存
最後一步就是將我們所獲取的數據進行保存,以便我們進行隨時的查閱,一般有文件夾,文本文檔,資料庫,表格等方式

閱讀全文

與python如何爬取交通數據相關的資料

熱點內容
開數據的時候為什麼這么卡 瀏覽:418
產品經理專業怎麼報名 瀏覽:390
失落的方舟多少級能交易 瀏覽:75
郵政市場具有什麼樣的特徵性 瀏覽:5
外匯交易有什麼好辦法 瀏覽:782
沒有技術怎麼創業好 瀏覽:503
固收私募產品有哪些 瀏覽:658
信息溝通不包括什麼 瀏覽:46
掛面有哪些產品可以開發 瀏覽:601
花都冷雞翅類批發市場在哪裡 瀏覽:91
向法院起訴的程序是什麼 瀏覽:660
沒技術怎麼找個技術活 瀏覽:299
為什麼它顯示信息已滿 瀏覽:202
農行卡交易什麼意思 瀏覽:651
核心技術員是干什麼 瀏覽:368
在市場有什麼樣的魚缸 瀏覽:644
abb數據是什麼 瀏覽:667
pps什麼程序 瀏覽:910
浙江西部哪裡有水果批發市場 瀏覽:34
膠州花鳥市場在哪裡 瀏覽:807