天才教育網(wǎng)合作機構 > 編程語言培訓機構 > Python培訓機構 >

全國python學習中心

歡迎您!
朋友圈

400-850-8622

全國統(tǒng)一學習專線 9:00-21:00

位置:編程語言培訓資訊 > Python培訓資訊 > python爬蟲基礎教程,Python 爬蟲工具

python爬蟲基礎教程,Python 爬蟲工具

日期:2021-07-26 09:32:08     瀏覽:373    來源:全國python學習中心
核心提示:不管你是待業(yè)還是失業(yè),在這個被互聯(lián)網(wǎng)圍繞的時代里,選擇python爬蟲基礎教程,就多了一項技能,還怕找不到工作?,還怕不好找工作?小編就來告訴你這個專業(yè)的優(yōu)勢到底體現(xiàn)在哪里:7個Python爬蟲實戰(zhàn)項目教程,Pytho

不管你是待業(yè)還是失業(yè),在這個被互聯(lián)網(wǎng)圍繞的時代里,選擇python爬蟲基礎教程,就多了一項技能,還怕找不到工作?,還怕不好找工作?小編就來告訴你這個專業(yè)的優(yōu)勢到底體現(xiàn)在哪里:7個Python爬蟲實戰(zhàn)項目教程,Python 爬蟲工具,python各類爬蟲經典案例,爬到你手軟!,小白如何入門 Python 爬蟲?,超牛逼!Python爬蟲學習的完整路線推薦??。

1.7個Python爬蟲實戰(zhàn)項目教程

有很多小伙伴在開始學習Python的時候,都特別期待能用Python寫一個爬蟲腳本,實驗樓上有不少python爬蟲的課程,這里總結7個實戰(zhàn)項目,如果你想學習Python爬蟲的話,可以挑選感興趣的學習哦;【python 網(wǎng)站信息爬蟲】該項目使用 Python 語言及 scrapy 開發(fā)一個網(wǎng)絡信息爬蟲,爬取實驗樓的課程數(shù)據(jù),并將爬取的課程信息保存在一個txt文件中。效果圖:【python 二手房信息爬取與數(shù)據(jù)呈現(xiàn)】該項目以鏈家的二手房網(wǎng)站為目標,使用python爬取鏈家官網(wǎng)在售的二手房信息,并且使用 繪圖包對爬取的信息進行分析,繪制簡單的圖表。部分效果圖:【給Python3爬蟲做一個界面.妹子圖網(wǎng)實戰(zhàn)】該項目利用PyQt給妹子圖網(wǎng)的爬蟲做一個交互界面,從而對PyQt做界面有初步了解,同時也學習寫爬蟲;效果圖:【Python網(wǎng)絡爬蟲實戰(zhàn)--Scrapy框架學習】從一個簡單的Scrapy項目入手,剖析爬蟲的結構和Scrapy的運行規(guī)則,*通過兩個兩個實戰(zhàn)項目——「爬取實驗樓課程信息」和「爬取電影網(wǎng)站信息」,帶領大家從零基礎入門,完全掌握使用Scrapy框架編寫網(wǎng)絡爬蟲的技能。課程列表:【Python3 實現(xiàn)淘女郎照片爬蟲】該項目使用 Python 實現(xiàn)一個淘寶女郎圖片收集爬蟲。爬取后的目錄結構:每個文件夾里都有一系列圖片;【高德API+Python解決租房問題】該項目使用Python腳本爬取某租房網(wǎng)站的房源信息,利用高德的 js API 在地圖上標出房源地點,劃出距離工作地點1小時內可到達的范圍。最終效果圖:【基于 Flask 及爬蟲實現(xiàn)微信娛樂機器人】該項目基于 Flask Web 框架開發(fā)的娛樂級別的微信公眾號后臺,其中會爬取糗百網(wǎng)站的笑話,自動回復給用戶;效果圖:*:以上就是7個有關python爬蟲的實戰(zhàn)項目,你可以挑選感興趣的進行學習哦;其他:更多實戰(zhàn)項目,點擊這里進行查看~12條技術學習路徑,帶你零基礎入門編程~

2.Python 爬蟲工具

前幾個月參加比賽我還自己寫了一個,不過python現(xiàn)在也有現(xiàn)成的模塊可以有,Google一下就可以了,寫一個也不難

3.python各類爬蟲經典案例,爬到你手軟!

小編整理了一些爬蟲的案例,代碼都整理出來了~先來看看有哪些項目呢:python爬蟲小工具(文件下載助手)爬蟲實戰(zhàn)(筆趣看小說下載)爬蟲實戰(zhàn)(VIP視頻下載)爬蟲實戰(zhàn)(百度文庫文章下載)爬蟲實戰(zhàn)(《帥啊》網(wǎng)帥哥圖片下載)爬蟲實戰(zhàn)(構建代理IP池)爬蟲實戰(zhàn)(《火影忍者》漫畫下載)爬蟲實戰(zhàn)(財務報表下載小助手)爬蟲實戰(zhàn)(抖音App視頻下載)爬蟲實戰(zhàn)(GEETEST驗證碼破解)爬蟲實戰(zhàn)(12306搶票小助手)爬蟲實戰(zhàn)(百萬英雄答題輔助系統(tǒng))爬蟲實戰(zhàn)(網(wǎng)易云音樂批量下載)爬蟲實戰(zhàn)(B站視頻和彈幕批量下載)爬蟲實戰(zhàn)(京東商品曬單圖下載)爬蟲實戰(zhàn)(正方教務管理系統(tǒng)爬蟲)怎么樣?是不是迫不及待的想自己動手試試了呢?在學習中有迷茫不知如何學習的朋友小編推薦一個學Python的學習q u n 227 -435- 450可以來了解一起進步一起學習!免費分享視頻資料爬蟲小工具文件下載小助手一個可以用于下載圖片、視頻、文件的小工具,有下載進度顯示功能。稍加修改即可添加到自己的爬蟲中。代碼展示:爬蟲實戰(zhàn)《筆趣看》盜版小說網(wǎng)站,爬取小說工具第三方依賴庫安裝:pip3 install 使用方法:python biqukan.py代碼展示:愛奇藝等主流視頻網(wǎng)站的VIP視頻破解助手(暫只支持PC和手機在線觀看VIP視頻!)運行源碼需要搭建Python3環(huán)境,并安裝相應第三方依賴庫:pip3 install -r .txt使用方法:python movie_.py運行環(huán)境:Windows, , , Python3代碼展示:百度文庫word文章爬取代碼不完善,沒有進行打包,不具通用性,純屬娛樂,以后有時間會完善。代碼展示:爬取《帥啊》網(wǎng),帥哥圖片運行平臺: 版本: Python3.xIDE: Sublime text3為了也能夠學習到新知識,本次爬蟲教程使用requests第三方庫,這個庫可不是Python3內置的urllib.request庫,而是一個強大的基于urllib3的第三方庫。代碼展示:構建代理IP池代碼展示:使用Scrapy爬取《火影忍者》漫畫代碼可以爬取整個《火影忍者》漫畫所有章節(jié)的內容,保存到本地。更改地址,可以爬取其他漫畫。保存地址可以在代碼中修改。代碼展示:《王者榮耀》推薦出裝查詢小助手網(wǎng)頁爬取已經會了,想過爬取手機APP里的內容嗎?代碼展示:財務報表下載小助手爬取的數(shù)據(jù)存入數(shù)據(jù)庫會嗎?《跟股神巴菲特學習炒股之財務報表入庫(MySQL)》也許能給你一些思路。代碼展示:抖音App視頻下載抖音App的視頻下載,就是普通的App爬取。代碼展示:GEETEST驗證碼破解爬蟲*的敵人之一是什么?沒錯,驗證碼!Geetest作為提供驗證碼服務的行家,市場占有率還是蠻高的。遇到Geetest提供的滑動驗證碼怎么破?授人予魚不如授人予漁,接下來就為大家呈現(xiàn)本教程的精彩內容。代碼展示:用Python搶火車票簡單代碼可以自己慢慢豐富,蠻簡單,有爬蟲基礎很好操作。代碼展示:baiwan:百萬英雄輔助答題看了網(wǎng)上很多的教程都是通過OCR識別的,這種方法的優(yōu)點在于通用性強。不同的答題活動都可以參加,但是缺點也明顯,速度有限,并且如果通過調用第三方OCR,有次數(shù)限制。但是使用本教程提到的數(shù)據(jù)接口。我們能很容易的獲取數(shù)據(jù),速度快,但是接口是變化的,需要及時更新。代碼展示:功能介紹:服務器端,使用Python(baiwan.py)通過抓包獲得的接口獲取答題數(shù)據(jù),解析之后通過百度知道搜索接口匹配答案,將最終匹配的結果寫入文件(file.txt)。Node.js(app.js)每隔1s讀取一次file.txt文件,并將讀取結果通過 bilibili.py -d 貓 -k 貓 -p 10三個參數(shù):-d保存視頻的文件夾名-kB站搜索的關鍵字-p下載搜索結果前多少頁京東商品曬單圖下載使用說明:python jd.py -k 芒果三個參數(shù):-d保存圖片的路徑,默認為fd.py文件所在文件夾-k搜索關鍵詞-n 下載商品的曬單圖個數(shù),即n個商店的曬單圖代碼展示:對正方教務管理系統(tǒng)個人課表,學生成績,績點等簡單爬取依賴環(huán)境python 3.6python庫http請求:requests,urllib數(shù)據(jù)提?。簉e,lxml,bs4存儲相關:os,sys驗證碼處理:PIL下載安裝在終端輸入如下命令:git clone git@github.com:Jack-Cherish/python-spider.git使用方法安裝依賴包pip install -r .txt運行在當前目錄下輸入:cd zhengfang_system_ spider.py運行爬蟲,按提示輸入學校教務網(wǎng),學號,密碼,輸入驗證碼稍等幾秒鐘,當前ZhengFang_System_Spider文件夾下就會生成zhengfang.txt個人課表,成績績點均已保存到該文本文件中代碼展示:

4.小白如何入門 Python 爬蟲?

本文針對初學者,我會用最簡單的案例告訴你如何入門python爬蟲!想要入門Python 爬蟲首先需要解決四個問題熟悉python編程了解HTML了解網(wǎng)絡爬蟲的基本原理學習使用python爬蟲庫一、你應該知道什么是爬蟲?網(wǎng)絡爬蟲,其實叫作網(wǎng)絡數(shù)據(jù)采集更容易理解。就是通過編程向網(wǎng)絡服務器請求數(shù)據(jù)(HTML表單),然后解析HTML,提取出自己想要的數(shù)據(jù)。歸納為四大步:根據(jù)url獲取HTML數(shù)據(jù)解析HTML,獲取目標信息存儲數(shù)據(jù)重復*步這會涉及到數(shù)據(jù)庫、網(wǎng)絡服務器、HTTP協(xié)議、HTML、數(shù)據(jù)科學、網(wǎng)絡安全、圖像處理等非常多的內容。但對于初學者而言,并不需要掌握這么多。二、python要學習到什么程度如果你不懂python,那么需要先學習python這門非常easy的語言(相對其它語言而言)。編程語言基礎語法無非是數(shù)據(jù)類型、數(shù)據(jù)結構、運算符、邏輯結構、函數(shù)、文件IO、錯誤處理這些,學起來會顯枯燥但并不難。剛開始入門爬蟲,你甚至不需要去學習python的類、多線程、模塊之類的略難內容。找一個面向初學者的教材或者網(wǎng)絡教程,花個十幾天功夫,就能對python基礎有個三四分的認識了,這時候你可以玩玩爬蟲嘍!先說下python入門,實在是太容易了,因為語法簡單,思維與人類的思維很相近。入門的時候,別整天想著看很多資料,網(wǎng)上各種找,*都留在了收藏夾吃灰。其實對于剛接觸編程的小白而言,最容易卡在安裝Python環(huán)境和實操代碼這一步。建議一開始先試試一些學習網(wǎng)站的免費課程,大概了解下Python的基礎知識,打好扎實的基礎后再上手學爬蟲。如果毫無基礎可言,甚至不知道如何下載Python,那我推薦下面這個課程↓ 不用安裝環(huán)境,直接在網(wǎng)頁上學習代碼實操,基礎知識配實戰(zhàn),這樣學起來更容易: 解析數(shù)據(jù),因為數(shù)據(jù)藏在HTML里。學習HTML并不難,它并不是編程語言,你只需要熟悉它的標記規(guī)則,這里大致講一下。HTML標記包含標簽(及其屬性)、基于字符的數(shù)據(jù)類型、字符引用和實體引用等幾個關鍵部分。HTML標簽是最常見的,通常成對出現(xiàn),比如

。這些成對出現(xiàn)的標簽中,*個標簽是開始標簽,第二個標簽是結束標簽。兩個標簽之間為元素的內容(文本、圖像等),有些標簽沒有內容,為空元素,如。以下是一個經典的Hello World程序的例子: This is a title

Hello world!

HTML文檔由嵌套的HTML元素構成。它們用HTML標簽表示,包含于尖括號中,如

[56]在一般情況下,一個元素由一對標簽表示:“開始標簽”

與“結束標簽”

。元素如果含有文本內容,就被放置在這些標簽之間。四、了解python網(wǎng)絡爬蟲的基本原理在編寫python爬蟲程序時,只需要做以下兩件事:發(fā)送GET請求,獲取HTML解析HTML,獲取數(shù)據(jù)這兩件事,python都有相應的庫幫你去做,你只需要知道如何去用它們就可以了。五、用python庫爬取百度首頁標題和圖片首先,發(fā)送HTML數(shù)據(jù)請求可以使用python內置庫urllib,該庫有一個urlopen函數(shù),可以根據(jù)url獲取HTML文件,這里嘗試獲取百度首頁“ 導入urllib庫的urlopen函數(shù) from urllib.request import urlopen # 發(fā)出請求,獲取html html = urlopen(" # 獲取的html內容是字節(jié),將其轉化為字符串 html_text = bytes.decode(html.read()) # 打印html內容 print(html_text)看看效果:輸出html內容部分截取我們看一下真正百度首頁html是什么樣的,如果你用的是谷歌瀏覽器,在百度主頁打開設置>更多工具>開發(fā)者工具,點擊element,就可以看到了:在谷歌瀏覽器中查看HTML對比一下你就會知道,剛才通過python程序獲取到的HTML和網(wǎng)頁中的一樣!獲取了HTML之后,接下就要解析HTML了,因為你想要的文本、圖片、視頻都藏在HTML里,你需要通過某種手段提取需要的數(shù)據(jù)。python同樣提供了非常多且強大的庫來幫助你解析HTML,這里以著名的python庫為工具來解析上面已經獲取的HTML。是第三方庫,需要安裝使用。在命令行用pip安裝就可以了:pip install 會將HTML內容轉換成結構化內容,你只要從結構化標簽里面提取數(shù)據(jù)就OK了:比如,我想獲取百度首頁的標題“百度一下,我就知道”,怎么辦呢?這個標題是被兩個標簽套住的,一個是一級標簽,另一個是二級標簽<title>,所以只要從標簽中取出信息就可以了# 導入urlopen函數(shù) from urllib.request import urlopen # 導入 from bs4 import as bf # 請求獲取HTML html = urlopen(" # 用解析html obj = bf(html.read(),'html.parser') # 從標簽head、title里提取標題 title = obj.head.title # 打印標題 print(title)看看結果:這樣就搞定了,成功提取出百度首頁的標題。如果我想要下載百度首頁logo圖片呢?*步先獲取該網(wǎng)頁所有圖片標簽和url,這個可以使用的findAll方法,它可以提取包含在標簽里的信息。一般來說,HTML里所有圖片信息會在“img”標簽里,所以我們通過findAll("img")就可以獲取到所有圖片的信息了。# 導入urlopen from urllib.request import urlopen # 導入 from bs4 import as bf # 請求獲取HTML html = urlopen(" # 用解析html obj = bf(html.read(),'html.parser') # 從標簽head、title里提取標題 title = obj.head.title # 使用find_all函數(shù)獲取所有圖片的信息 pic_info = obj.find_all('img') # 分別打印每個圖片的信息 for i in pic_info: print(i)看看結果:打印出了所有圖片的屬性,包括class(元素類名)、src(鏈接地址)、長寬高等。其中有百度首頁logo的圖片,該圖片的class(元素類名)是index-logo-src。[<img class="index-logo-src" height="129" hidefocus="true" src="http://www.baidu.com/img/bd_logo1.png" usemap="#mp" width="270"/>, <img alt="到百度首頁" class="index-logo-src" src="http://www.baidu.com/img/baidu_jgylogo3.gif" title="到百度首頁"/>]可以看到圖片的鏈接地址在src這個屬性里,我們要獲取圖片鏈接地址:# 導入urlopen from urllib.request import urlopen # 導入 from bs4 import as bf # 請求獲取HTML html = urlopen(" # 用解析html obj = bf(html.read(),'html.parser') # 從標簽head、title里提取標題 title = obj.head.title # 只提取logo圖片的信息 logo_pic_info = obj.find_all('img',class_="index-logo-src") # 提取logo圖片的鏈接 logo_url = "https:"+logo_pic_info[0]['src'] # 打印鏈接 print(logo_url)結果:獲取地址后,就可以用urllib.函數(shù)下載logo圖片了# 導入urlopen from urllib.request import urlopen # 導入 from bs4 import as bf # 導入函數(shù),用于下載圖片 from urllib.request import # 請求獲取HTML html = urlopen(" # 用解析html obj = bf(html.read(),'html.parser') # 從標簽head、title里提取標題 title = obj.head.title # 只提取logo圖片的信息 logo_pic_info = obj.find_all('img',class_="index-logo-src") # 提取logo圖片的鏈接 logo_url = "https:"+logo_pic_info[0]['src'] # 使用下載圖片 (logo_url, 'logo.png')最終圖片保存在'logo.png'六、結語本文用爬取百度首頁標題和logo圖片的案例,講解了python爬蟲的基本原理以及相關python庫的使用,這是比較初級的爬蟲知識,還有很多優(yōu)秀的python爬蟲庫和框架等待后續(xù)去學習。房子一層一層蓋,知識一點一點學。剛接觸Python的同學還是要打好基礎,自己上手實操↓ 話不多說,上干貨!最近發(fā)現(xiàn)了一個接近免費的Python課程,在網(wǎng)頁上教學基礎知識+實操代碼,比較適合小白學習,比找資料自學高效多了。*分享給你們,點擊下面鏈接就可以領?。?/p><h3>5.超牛逼!Python爬蟲學習的完整路線推薦</h3><p>數(shù)據(jù)是決策的原材料,高質量的數(shù)據(jù)價值不菲,如何挖掘原材料成為互聯(lián)網(wǎng)時代的先驅,掌握信息的源頭,就能比別人更快一步。大數(shù)據(jù)時代,互聯(lián)網(wǎng)成為大量信息的載體,機械的復制粘貼不再實用,不僅耗時費力還極易出錯,這時爬蟲的出現(xiàn)解放了大家的雙手,以其高速爬行、定向抓取資源的能力獲得了大家的青睞。爬蟲變得越來越流行,不僅因為它能夠快速爬取海量的數(shù)據(jù),更因為有python這樣簡單易用的語言使得爬蟲能夠快速上手。對于小白來說,爬蟲可能是一件非常復雜、技術門檻很高的事情,但掌握正確的方法,在短時間內做到能夠爬取主流網(wǎng)站的數(shù)據(jù),其實非常容易實現(xiàn),但建議你從一開始就要有一個具體的目標。在目標的驅動下,你的學習才會更加精準和高效。那些所有你認為必須的前置知識,都是可以在完成目標的過程中學到的?;趐ython爬蟲,我們整理了一個完整的學習框架:篩選和甄別學習哪些知識,在哪里去獲取資源是許多初學者共同面臨的問題。接下來,我們將學習框架進行拆解,分別對每個部分進行詳細介紹和推薦一些相關資源,告訴你學什么、怎么學、在哪里學。爬蟲簡介爬蟲是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。這個定義看起來很生硬,我們換一種更好理解的解釋:我們作為用戶獲取網(wǎng)絡數(shù)據(jù)的方式是瀏覽器提交請求->下載網(wǎng)頁代碼->解析/渲染成頁面;而爬蟲的方式是模擬瀏覽器發(fā)送請求->下載網(wǎng)頁代碼->只提取有用的數(shù)據(jù)->存放于數(shù)據(jù)庫或文件中。爬蟲與我們的區(qū)別是,爬蟲程序只提取網(wǎng)頁代碼中對我們有用的數(shù)據(jù),并且爬蟲抓取速度快,量級大。隨著數(shù)據(jù)的規(guī)?;?,爬蟲獲取數(shù)據(jù)的高效性能越來越突出,能夠做的事情越來越多:市場分析:電商分析、商圈分析、一二級市場分析等市場監(jiān)控:電商、新聞、房源監(jiān)控等商機發(fā)現(xiàn):招投標情報發(fā)現(xiàn)、客戶資料發(fā)掘、企業(yè)客戶發(fā)現(xiàn)等進行爬蟲學習,首先要懂得是網(wǎng)頁,那些我們肉眼可見的光鮮亮麗的網(wǎng)頁是由HTML、css、等網(wǎng)頁源碼所支撐起來的。這些源碼被瀏覽器所識別轉換成我們看到的網(wǎng)頁,這些源碼里面必定存在著很多規(guī)律,我們的爬蟲就能按照這樣的規(guī)律來爬取需要的信息。無規(guī)矩不成方圓,Robots協(xié)議就是爬蟲中的規(guī)矩,它告訴爬蟲和搜索引擎哪些頁面可以抓取,哪些不可以抓取。通常是一個叫作robots.txt的文本文件,放在網(wǎng)站的根目錄下。輕量級爬蟲“獲取數(shù)據(jù)——解析數(shù)據(jù)——存儲數(shù)據(jù)”是爬蟲的三部曲,大部分爬蟲都是按這樣的流程來進行,這其實也是模擬了我們使用瀏覽器獲取網(wǎng)頁信息的過程。1、獲取數(shù)據(jù)爬蟲*步操作就是模擬瀏覽器向服務器發(fā)送請求,基于python,你不需要了解從數(shù)據(jù)的實現(xiàn),HTTP、TCP、IP的網(wǎng)絡傳輸結構,一直到服務器響應和應達的原理,因為python提供了功能齊全的類庫來幫我們完成這些請求。Python自帶的標準庫urllib2使用的較多,它是python內置的HTTP請求庫,如果你只進行基本的爬蟲網(wǎng)頁抓取,那么urllib2足夠用。Requests的slogen是“Requests is the only Non-GMO HTTP library for Python, safe for ”,相對urllib2,requests使用起來確實簡潔很多,并且自帶json解析器。如果你需要爬取異步加載的動態(tài)網(wǎng)站,可以學習瀏覽器抓包分析真實請求或者學習Selenium來實現(xiàn)自動化。對于爬蟲來說,在能夠爬取到數(shù)據(jù)地前提下當然是越快越好,顯然傳統(tǒng)地同步代碼不能滿足我們對速度地需求。(ps:據(jù)國外數(shù)據(jù)統(tǒng)計:正常情況下我們請求同一個頁面 100次的話,最少也得花費 30秒,但使用異步請求同一個頁面 100次的話,只需要要 3秒左右。)aiohttp是你值得擁有的一個庫,aiohttp的異步操作借助于async/await關鍵字的寫法變得更加簡潔,架構更加清晰。使用異步請求庫進行數(shù)據(jù)抓取時,會大大提高效率。你可以根據(jù)自己的需求選擇合適的請求庫,但建議先從python自帶的urllib開始,當然,你可以在學習時嘗試所有的方式,以便更了解這些庫的使用。推薦請求庫資源:urllib2文檔: : 、JSON、XML等格式。解析庫的使用等價于在HTML中查找需要的信息時時使用正則,能夠更加快捷地定位到具體的元素獲取相應的信息。Css選擇器是一種快速定位元素的方法。Pyqurrey使用lxml解析器進行快速在xml和html文檔上操作,它提供了和jQuery類似的語法來解析HTML文檔,支持CSS選擇器,使用非常方便。Beautiful Soup是借助網(wǎng)頁的結構和屬性等特性來解析網(wǎng)頁的工具,能自動轉換編碼。支持Python標準庫中的HTML解析器,還支持一些第三方的解析器。Xpath最初是用來搜尋XML文檔的,但是它同樣適用于HTML文檔的搜索。它提供了超過 100 個內建的函數(shù)。這些函數(shù)用于字符串值、數(shù)值、日期和時間比較、節(jié)點和 QName 處理、序列處理、邏輯值等等,并且XQuery和XPointer都構建于XPath基礎上。Re正則表達式通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本。個人認為前端基礎比較扎實的,用pyquery是最方便的,也不錯,re速度比較快,但是寫正則比較麻煩。當然了,既然用python,肯定還是自己用著方便*。推薦解析器資源:pyquery 作為關系型數(shù)據(jù)庫的代表,擁有較為成熟的體系,成熟度很高,可以很好地去存儲一些數(shù)據(jù),但在在海量數(shù)據(jù)處理的時候效率會顯著變慢,已然滿足不了某些大數(shù)據(jù)的處理要求。MongoDB已經流行了很長一段時間,相對于MySQL ,MongoDB可以方便你去存儲一些非結構化的數(shù)據(jù),比如各種評論的文本,圖片的鏈接等等。你也可以利用PyMongo,更方便地在Python中操作MongoDB。因為這里要用到的數(shù)據(jù)庫知識其實非常簡單,主要是數(shù)據(jù)如何入庫、如何進行提取,在需要的時候再學習就行。Redis是一個不折不扣的內存數(shù)據(jù)庫,Redis 支持的數(shù)據(jù)結構豐富,包括hash、set、list等。數(shù)據(jù)全部存在內存,訪問速度快,可以存儲大量的數(shù)據(jù),一般應用于分布式爬蟲的數(shù)據(jù)存儲當中。推薦數(shù)據(jù)庫資源:mysql文檔 redis文檔 selector 能夠方便地解析 response,然而它最讓人驚喜的還是它超高的性能,讓你可以將爬蟲工程化、模塊化。學會scrapy,你可以自己去搭建一些爬蟲框架,你就基本具備爬蟲工程師的思維了。*Pyspider作為人氣飆升的國內大神開發(fā)的框架,滿足了絕大多數(shù)Python爬蟲的需求 —— 定向抓取,結構化化解析。它能在瀏覽器界面上進行腳本的編寫,功能的調度和爬取結果的實時查看,后端使用常用的數(shù)據(jù)庫進行爬取結果的存儲等。其功能強大到更像一個產品而不是一個框架。這是三個最有代表性的爬蟲框架,它們都有遠超別人的有點,比如Nutch天生的搜索引擎解決方案、Pyspider產品級的WebUI、Scrapy最靈活的定制化爬取。建議先從最接近爬蟲本質的框架scary學起,再去接觸人性化的Pyspider,為搜索引擎而生的Nutch。推薦爬蟲框架資源:Nutch文檔 scary文檔 pyspider文檔 爬取基本數(shù)據(jù)已經沒有問題,還能使用框架來面對一寫較為復雜的數(shù)據(jù),此時,就算遇到反爬,你也掌握了一些反反爬技巧。你的瓶頸會集中到爬取海量數(shù)據(jù)的效率,這個時候相信你會很自然地接觸到一個很厲害的名字:分布式爬蟲。分布式這個東西,聽起來很恐怖,但其實就是利用多線程的原理將多臺主機組合起來,共同完成一個爬取任務,需要你掌握 Scrapy +Redis+MQ+Celery這些工具。Scrapy 前面我們說過了,用于做基本的頁面爬取, Redis 則用來存儲要爬取的網(wǎng)頁隊列,也就是任務隊列。scarpy-redis就是用來在scrapy中實現(xiàn)分布式的組件,通過它可以快速實現(xiàn)簡單分布式爬蟲程序。由于在高并發(fā)環(huán)境下,由于來不及同步處理,請求往往會發(fā)生堵塞,通過使用消息隊列MQ,我們可以異步處理請求,從而緩解系統(tǒng)的壓力。RabbitMQ本身支持很多的協(xié)議:AMQP,XMPP, SMTP,STOMP,使的它變的非常重量級,更適合于企業(yè)級的開發(fā)。Scrapy-rabbitmq-link是可以讓你從RabbitMQ 消息隊列中取到URL并且分發(fā)給Scrapy spiders的組件。Celery是一個簡單、靈活且可靠的,處理大量消息的分布式系統(tǒng)。支持 RabbitMQ、Redis 甚至其他數(shù)據(jù)庫系統(tǒng)作為其消息代理中間件, 在處理異步任務、任務調度、處理定時任務、分布式調度等場景表現(xiàn)良好。所以分布式爬蟲只是聽起來有些可怕,也不過如此。當你能夠寫分布式的爬蟲的時候,那么你可以去嘗試打造一些基本的爬蟲架構了,實現(xiàn)一些更加自動化的數(shù)據(jù)獲取。推薦分布式資源:scrapy-redis文檔 </p><p>就拿大數(shù)據(jù)說話,優(yōu)勢一目了然,從事IT行業(yè),打開IT行業(yè)的新大門,找到適合自己的培訓機構,進行專業(yè)和系統(tǒng)的學習。</p></div> </div> <div class="ay994np" id="content" class="content"> <div id="pug4bij" class="kccontentss"> <h3> <ul class="navss" role="tablist"> <li id="opu4mp4" class="active"><a href="#Section2" data-toggle="tab">課程介紹</a></li> </ul> </h3> <script type="text/javascript" src="https://fb5.fangxinxue.net/plan/js/202105/27/25.js"></script> </div> <p class="class-pp">本文由 <a href="http://m.huangchao1.cn/jigou/ms-qgpythonxxzx/" target="_blank" title="全國python學習中心" style="color:#FF6700;">全國python學習中心</a> 整理發(fā)布。更多培訓課程,學習資訊,課程優(yōu)惠,課程開班,學校地址等學校信息,可以留下你的聯(lián)系方式,讓課程老師跟你詳細解答:<br> 咨詢電話:<strong>400-850-8622 </strong> </p> <div id="s9hxlmq" class="wrapper_new"> <span style="width: 100%;float: left;padding-top: 20px;">如果本頁不是您要找的課程,您也可以百度查找一下:</span> <a id="result_logo"><img class="index-logo-src" src="https://imgs.edutt.com/skin/xxxx/image/result.png" alt="到百度首頁" title="到百度首頁"></a> <span id="qswm9bm" class="bg s_ipt_wr quickdelete-wrap"> <span id="fgjdweq" class="soutu-btn"></span> <input id="kw" name="wd" class="s_ipt" value="Python培訓" maxlength="255" autocomplete="off"> <span id="4png9vw" class="bg s_btn_wr"><a target="_blank" rel="nofollow"><input type="submit" id="su" value="百度一下" class="bg s_btn"></a></span> </span> </div> </div> <div id="wef4fxw" class="relevant"> <div id="qc9jawx" class="title-B3"><span>相關文章</span></div> <div id="4wdaujc" class="class-list-right_con classListCon_01"> <div id="h9464qq" class="clearfix"> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_1857301/" title="python爬蟲基礎,python各類爬蟲經典案例,爬到你手軟!"> <div id="vksolhp" class="fr"> <div id="p99oitx" class="h_title">python爬蟲基礎,python各類爬蟲經典案例,爬到你手軟!</div> </div> </a> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_1861197/" title="python零基礎爬蟲,(爬蟲基礎篇)零基礎——Python 爬蟲獲取上萬條論文數(shù)據(jù)"> <div id="9c4ajrh" class="fr"> <div id="kzadpfz" class="h_title">python零基礎爬蟲,(爬蟲基礎篇)零基礎——Python 爬蟲獲取上萬條論文數(shù)據(jù)</div> </div> </a> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_1867840/" title="python爬蟲基礎入門,小白如何入門 Python 爬蟲?"> <div id="uny9bgh" class="fr"> <div id="h49pt9x" class="h_title">python爬蟲基礎入門,小白如何入門 Python 爬蟲?</div> </div> </a> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_1888321/" title="python爬蟲入門教程,零基礎小白學Python,從爬蟲入手簡單易懂好操作!"> <div id="zsegmfg" class="fr"> <div id="wi4l4b9" class="h_title">python爬蟲入門教程,零基礎小白學Python,從爬蟲入手簡單易懂好操作!</div> </div> </a> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_2001062/" title="石家莊python爬蟲培訓班(Python基礎語法)"> <div id="zwupviz" class="fr"> <div id="4hcionz" class="h_title">石家莊python爬蟲培訓班(Python基礎語法)</div> </div> </a> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_2217995/" title="石家莊有沒有爬蟲培訓(零基礎能學python嗎)"> <div id="mgfazjm" class="fr"> <div id="n9tszft" class="h_title">石家莊有沒有爬蟲培訓(零基礎能學python嗎)</div> </div> </a> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_2266590/" title="石家莊學爬蟲多少錢(零基礎能學python嗎)"> <div id="xsylrid" class="fr"> <div id="i4jeosf" class="h_title">石家莊學爬蟲多少錢(零基礎能學python嗎)</div> </div> </a> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_3106552/" title="石家莊長安區(qū)學Python爬蟲多少錢(Python基礎語法)"> <div id="ejntwej" class="fr"> <div id="lpnptjz" class="h_title">石家莊長安區(qū)學Python爬蟲多少錢(Python基礎語法)</div> </div> </a> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_3409093/" title="石家莊長安區(qū)Python爬蟲培訓價格(Python基礎語法)"> <div id="ycos9un" class="fr"> <div id="9dhqroh" class="h_title">石家莊長安區(qū)Python爬蟲培訓價格(Python基礎語法)</div> </div> </a> </div> </div> </div> <br/> </div> </div> <aside class="class-list-right fr"> <style> .countdown span{font-size: 32px;} .ts_box{width:400px;height:80px;line-height:80px;color:#fff;position:fixed;left:calc((100% - 400px) / 2);top:400px;background:rgba(0,0,0,0.8);text-align:center;z-index:999999;display:none;} .apTopDiv { width: 400px; height: 430px; display: none; } </style> <div id="4bytuk4" class="apTopDiv" style="display: none;"></div> <div id="hiqnopl" class="course-right"> <div id="gdivkha" class="contact" style="z-index:999;"> <div id="ptjz9gd" class="test-title">在線報名</div> <div id="9csiqkq" class="note">免費體驗課開辦倒計時</div> <div id="9hfamrs" class="countdown"><span id="swqowke" class="JS-shi">11</span>:<span id="pirram9" class="JS-fen">59</span>:<span id="wer49eq" class="JS-miao">38</span></div> <form name="bmform" id="bmform" method="post"> <input name="kcname" value="python爬蟲基礎教程,Python 爬蟲工具" type="hidden"> <input name="itemid" value="1878657" type="hidden"> <input name="linkurl" value="http://m.huangchao1.cn/news_show_1878657" type="hidden"> <input name="uname" value="qgpythonxxzx" type="hidden"> <input name="isvip" value="1" type="hidden"> <ul> <li><input type="text" name="truename" placeholder="請輸入您的姓名" id="contact-name"/></li> <li><input type="text" name="mobile" placeholder="請輸入您的電話" id="contact-phone"/></li> </ul> <button type="button" id="sub">預約試聽</button> </form> <div id="xtfnh4v" class="note more">稍后會有專業(yè)老師給您回電,請保持手機暢通</div> <div id="swtwm6w" class="contact-info"> <div id="swmn4lt" class="tel">咨詢電話:400-850-8622</div> <a target="_blank"><button class="btn"></button></a> </div> </div> </div> <div id="jp9wu9z" class="ts_box" id="error1">姓名不能為空</div> <div id="r4eyp6g" class="ts_box" id="error2">手機號格式錯誤</div> <script type="text/javascript"> var s = 0; $("#sub").click(function(){ var l; l = $("#contact-name").val().length; if(l < 2) { $("#error1").show(); setTimeout(function(){$("#error1").hide();},2000); $("#contact-name").focus(); return false; } var mobile = $.trim($("#contact-phone").val()); if(mobile == "") { $("#error2").show(); setTimeout(function(){$("#error2").hide();},2000); $("#contact-phone").focus(); return false; } if(!isPhone(mobile)) { $("#error2").show(); $("#contact-phone").focus(); return false; } if(s==1){ alert('不要重復提交'); return false; } s = 1; var url = "http://m.huangchao1.cn/api/baoming.php"; $.post(url, $('#bmform').serialize(), function(data){ if(data==1) { alert('報名成功'); }else { alert(data); } }); }); function isPhone(strRegex) { var reg = /^1(3|4|5|6|7|8|9)\d{9}$/; return reg.test(strRegex); } </script> <script> (function () { var shi = document.getElementsByClassName('JS-shi')[0]; var fen = document.getElementsByClassName('JS-fen')[0]; var miao = document.getElementsByClassName('JS-miao')[0]; var endTime = Date.now() + 86400000; var interval = null; interval = setInterval(function () { var syhm = endTime - Date.now(); // 剩余毫秒 if (syhm >= 0) { shi.innerText = checkTime(Math.floor(syhm / 1000 / 60 / 60 % 24)); fen.innerText = checkTime(Math.floor(syhm / 1000 / 60 % 60)); miao.innerText = checkTime(Math.floor(syhm / 1000 % 60)); } else { clearInterval(interval); } }, 0); })(); function checkTime(i) { //將0-9的數(shù)字前面加上0,例1變?yōu)?1 if (i < 10) { i = "0" + i; } return i; } </script> <div id="zlm4b4s" class="mgt" style="position: relative;margin-top: 20px;"> <div id="vzmrspb" class="classList_tit" style="height:30px;margin-top:20px;margin-bottom:20px;"> <ul class="clearfix"> <li id="qkzluwp" class="li01 active">作者最新文章</li> </ul> </div> </div> <div id="xmkam94" class="class-list-right_con classListCon_01"> <div id="9k9gbhb" class="clearfix"> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_1821792/" title="python好不好,鄭多燕減肥操中文版全集下載"> <div id="owfrs9a" class="fr"> <div id="sxnhmzy" class="h_title">python好不好,鄭多燕減肥操中文版全集下載</div> <span>來源:最新文章</span> </div> </a> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_7638926/" title="怎么升級python"> <div id="zzlfwbz" class="fr"> <div id="4hiqdwi" class="h_title">怎么升級python</div> <span>來源:最新文章</span> </div> </a> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_7638439/" title="python實訓"> <div id="1ztnd4y" class="fr"> <div id="2iytm9k" class="h_title">python實訓</div> <span>來源:最新文章</span> </div> </a> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_7637871/" title="python學需要什么"> <div id="4zwwn9c" class="fr"> <div id="uc9xp9k" class="h_title">python學需要什么</div> <span>來源:最新文章</span> </div> </a> <a class="a-new-class clearfix" href="http://m.huangchao1.cn/news_show_7619570/" title="python網(wǎng)站"> <div id="dkf99w4" class="fr"> <div id="dnopy69" class="h_title">python網(wǎng)站</div> <span>來源:最新文章</span> </div> </a> </div> </div> </aside> </section> <footer class="width_all qinxue-footer"> <div id="leqyq9v" class="width_main qinxue-p"> <p class="qx-p1"> 全國python學習中心  |  <a href="http://m.huangchao1.cn/jigou/ms-qgpythonxxzx/about.html">關于我們</a>  |  <a href="http://m.huangchao1.cn/jigou/ms-qgpythonxxzx/contact.html" >聯(lián)系我們</a></p> <p class="qx-p2"> 全國python學習中心2024@版權所有</p> <p class="qx-p3"> <a href="http://m.huangchao1.cn/jg.htm" target="_blank" title="新入駐機構">新機構</a>    <a href="http://m.huangchao1.cn/ke.htm" target="_blank" title="新發(fā)布課程">新課程</a>    <a href="http://m.huangchao1.cn/xin.htm" target="_blank" title="新發(fā)布資訊">新文章</a>    <a href="http://m.huangchao1.cn/wen.htm" target="_blank" title="新發(fā)布資訊">新問答</a>    <a href="http://m.huangchao1.cn/peixun/" target="_blank" title="新發(fā)布資訊">新專題</a>    <a href="http://m.huangchao1.cn/zhishi/" target="_blank" title="新發(fā)布資訊">新聚合</a>    <a href="http://m.huangchao1.cn/sitemap/" target="_blank">網(wǎng)站地圖</a> </p> </div> </footer> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://#/hm.js?da6504ecb332fc4923ccf14d225be14d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); $(function() { $(".yh_conct").hover(function() { $(".yh_conct").css("right", "5px"); $(".yh_bar .yh_ercode").css('height', '200px'); }, function() { $(".yh_conct").css("right", "-127px"); $(".yh_bar .yh_ercode").css('height', '53px'); }); $(".yh_top").click(function() { $("html,body").animate({ 'scrollTop': '0px' }, 300) }); }); $(function(){ $("img").lazyload({ placeholder : "https://img.alicdn.com/imgextra/i2/411980463/O1CN0139i42e1FI5u6RlBgQ_!!411980463.png", //用圖片提前占位 effect: "fadeIn", threshold: 200, failurelimit : 20 }); }); GoMobile('https://m.edutt.com/news_show_1878657/'); </script> <script>(function() {var _53code = document.createElement("script");_53code.src = "https://tb.53kf.com/code/code/20422cdb9dfb57a3b487b335ad2f404d0/1";var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(_53code, s);})();</script> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://m.huangchao1.cn/" title="性按摩xxxx在线观看">性按摩xxxx在线观看</a> <div class="friend-links"> </div> </div> </footer> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body><div id="k4d1s" class="pl_css_ganrao" style="display: none;"><dfn id="k4d1s"></dfn><dd id="k4d1s"><li id="k4d1s"><acronym id="k4d1s"><xmp id="k4d1s"></xmp></acronym></li></dd><delect id="k4d1s"><bdo id="k4d1s"><rp id="k4d1s"></rp></bdo></delect><xmp id="k4d1s"><small id="k4d1s"></small></xmp><sup id="k4d1s"></sup><ins id="k4d1s"><label id="k4d1s"><option id="k4d1s"><source id="k4d1s"></source></option></label></ins><td id="k4d1s"><fieldset id="k4d1s"></fieldset></td><pre id="k4d1s"></pre><thead id="k4d1s"></thead><strong id="k4d1s"></strong><acronym id="k4d1s"><dfn id="k4d1s"><mark id="k4d1s"><th id="k4d1s"></th></mark></dfn></acronym><pre id="k4d1s"></pre><dd id="k4d1s"><tbody id="k4d1s"><mark id="k4d1s"></mark></tbody></dd><thead id="k4d1s"></thead><dd id="k4d1s"><tbody id="k4d1s"><mark id="k4d1s"><object id="k4d1s"></object></mark></tbody></dd><kbd id="k4d1s"></kbd><strong id="k4d1s"><rp id="k4d1s"><dl id="k4d1s"></dl></rp></strong><source id="k4d1s"><tr id="k4d1s"><th id="k4d1s"><tr id="k4d1s"></tr></th></tr></source><style id="k4d1s"></style><blockquote id="k4d1s"><option id="k4d1s"></option></blockquote><dd id="k4d1s"></dd><label id="k4d1s"></label><tr id="k4d1s"></tr><sub id="k4d1s"></sub><p id="k4d1s"><ins id="k4d1s"><p id="k4d1s"><var id="k4d1s"></var></p></ins></p><font id="k4d1s"><wbr id="k4d1s"><kbd id="k4d1s"><pre id="k4d1s"></pre></kbd></wbr></font><strike id="k4d1s"><rp id="k4d1s"></rp></strike><optgroup id="k4d1s"><xmp id="k4d1s"></xmp></optgroup><meter id="k4d1s"></meter><abbr id="k4d1s"><center id="k4d1s"><listing id="k4d1s"><b id="k4d1s"></b></listing></center></abbr><var id="k4d1s"><thead id="k4d1s"><var id="k4d1s"></var></thead></var><sup id="k4d1s"></sup><i id="k4d1s"></i><object id="k4d1s"></object><rt id="k4d1s"></rt><optgroup id="k4d1s"><menuitem id="k4d1s"><i id="k4d1s"><pre id="k4d1s"></pre></i></menuitem></optgroup><strong id="k4d1s"><rp id="k4d1s"><legend id="k4d1s"></legend></rp></strong><span id="k4d1s"></span><center id="k4d1s"><input id="k4d1s"></input></center><pre id="k4d1s"><sup id="k4d1s"><center id="k4d1s"><nav id="k4d1s"></nav></center></sup></pre><input id="k4d1s"></input><acronym id="k4d1s"><style id="k4d1s"></style></acronym><xmp id="k4d1s"><var id="k4d1s"></var></xmp><abbr id="k4d1s"></abbr><small id="k4d1s"><thead id="k4d1s"><label id="k4d1s"></label></thead></small><optgroup id="k4d1s"><noframes id="k4d1s"><source id="k4d1s"><strong id="k4d1s"></strong></source></noframes></optgroup><output id="k4d1s"></output><strong id="k4d1s"></strong><center id="k4d1s"><nav id="k4d1s"></nav></center><video id="k4d1s"><div id="k4d1s"><code id="k4d1s"></code></div></video><small id="k4d1s"></small><em id="k4d1s"><dl id="k4d1s"></dl></em><mark id="k4d1s"><th id="k4d1s"><menu id="k4d1s"></menu></th></mark><del id="k4d1s"><label id="k4d1s"></label></del><strike id="k4d1s"></strike><source id="k4d1s"></source><pre id="k4d1s"></pre><var id="k4d1s"></var><delect id="k4d1s"><sub id="k4d1s"></sub></delect><option id="k4d1s"><strike id="k4d1s"></strike></option><mark id="k4d1s"><th id="k4d1s"><button id="k4d1s"></button></th></mark><source id="k4d1s"></source><output id="k4d1s"></output><em id="k4d1s"><source id="k4d1s"><tr id="k4d1s"></tr></source></em><noscript id="k4d1s"><address id="k4d1s"></address></noscript><blockquote id="k4d1s"></blockquote><menuitem id="k4d1s"><dl id="k4d1s"><pre id="k4d1s"><span id="k4d1s"></span></pre></dl></menuitem><nobr id="k4d1s"></nobr><small id="k4d1s"></small><center id="k4d1s"><acronym id="k4d1s"><b id="k4d1s"></b></acronym></center><strong id="k4d1s"></strong><input id="k4d1s"></input><fieldset id="k4d1s"><optgroup id="k4d1s"><kbd id="k4d1s"></kbd></optgroup></fieldset><strong id="k4d1s"><delect id="k4d1s"><strong id="k4d1s"><rp id="k4d1s"></rp></strong></delect></strong><legend id="k4d1s"></legend><th id="k4d1s"></th><wbr id="k4d1s"></wbr><code id="k4d1s"><noframes id="k4d1s"><source id="k4d1s"></source></noframes></code><ruby id="k4d1s"><big id="k4d1s"><strong id="k4d1s"><big id="k4d1s"></big></strong></big></ruby><label id="k4d1s"><pre id="k4d1s"><ol id="k4d1s"><pre id="k4d1s"></pre></ol></pre></label><b id="k4d1s"><dl id="k4d1s"><dfn id="k4d1s"><span id="k4d1s"></span></dfn></dl></b><wbr id="k4d1s"><cite id="k4d1s"><table id="k4d1s"></table></cite></wbr><blockquote id="k4d1s"><legend id="k4d1s"></legend></blockquote><dfn id="k4d1s"><acronym id="k4d1s"><p id="k4d1s"></p></acronym></dfn><acronym id="k4d1s"></acronym><address id="k4d1s"><strike id="k4d1s"><form id="k4d1s"></form></strike></address><center id="k4d1s"><legend id="k4d1s"></legend></center><delect id="k4d1s"><strike id="k4d1s"></strike></delect><cite id="k4d1s"></cite><output id="k4d1s"></output><acronym id="k4d1s"></acronym><bdo id="k4d1s"></bdo><abbr id="k4d1s"><p id="k4d1s"><input id="k4d1s"></input></p></abbr><style id="k4d1s"><nobr id="k4d1s"><th id="k4d1s"></th></nobr></style><dl id="k4d1s"></dl><pre id="k4d1s"></pre><sup id="k4d1s"><abbr id="k4d1s"></abbr></sup><delect id="k4d1s"></delect><pre id="k4d1s"><ol id="k4d1s"><tr id="k4d1s"><tt id="k4d1s"></tt></tr></ol></pre><abbr id="k4d1s"><del id="k4d1s"></del></abbr></div> </html>