天才教育網(wǎng)合作機(jī)構(gòu) > 編程語言培訓(xùn)機(jī)構(gòu) > Python培訓(xùn)機(jī)構(gòu) >

全國python學(xué)習(xí)中心

歡迎您!
朋友圈

400-850-8622

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

位置:編程語言培訓(xùn)資訊 > Python培訓(xùn)資訊 > python爬蟲怎么寫,小白如何入門 Python 爬蟲?

python爬蟲怎么寫,小白如何入門 Python 爬蟲?

日期:2021-06-13 15:16:23     瀏覽:76    來源:全國python學(xué)習(xí)中心
核心提示:不管你是待業(yè)還是失業(yè),在這個(gè)被互聯(lián)網(wǎng)圍繞的時(shí)代里,選擇python爬蟲怎么寫,就多了一項(xiàng)技能,還怕找不到工作?,還怕不好找工作?小編就來告訴你這個(gè)專業(yè)的優(yōu)勢到底體現(xiàn)在哪里:Python技術(shù)筆記匯總(含語法、工具庫

不管你是待業(yè)還是失業(yè),在這個(gè)被互聯(lián)網(wǎng)圍繞的時(shí)代里,選擇python爬蟲怎么寫,就多了一項(xiàng)技能,還怕找不到工作?,還怕不好找工作?小編就來告訴你這個(gè)專業(yè)的優(yōu)勢到底體現(xiàn)在哪里:Python技術(shù)筆記匯總(含語法、工具庫、數(shù)科、爬蟲等),小白如何入門 Python 爬蟲?,超牛逼!Python爬蟲學(xué)習(xí)的完整路線推薦??。

1.Python技術(shù)筆記匯總(含語法、工具庫、數(shù)科、爬蟲等)

自去年五月份在知乎發(fā)布Python技術(shù)筆記以來,迄今文章+回答總數(shù)已經(jīng)達(dá)到接近200篇。這些內(nèi)容包括Python基礎(chǔ)語法、數(shù)據(jù)科學(xué)、爬蟲、自動(dòng)化辦公、機(jī)器學(xué)習(xí)、各類工具庫及小技巧。這里把寫過的內(nèi)容匯總成目錄,方便查詢檢索。1. 學(xué)習(xí)方法怎么自學(xué)python,大概要多久? 為什么自學(xué)Python看不進(jìn)去? 如何系統(tǒng)地學(xué)習(xí)Python 中 , numpy, scipy, pandas? 哪些 Python 庫讓你相見恨晚? 有什么關(guān)于python的書值得閱讀? 請問自學(xué) Python 有必要買課程嗎? Python學(xué)到什么程度可以面試工作? 用python進(jìn)行辦公自動(dòng)化都需要學(xué)習(xí)什么知識(shí)呢? 你是如何開始能寫 Python 爬蟲? 2. 入門Python初學(xué) Python 需要安裝哪些軟件? 入門python有什么好的書籍推薦? 學(xué)Python的學(xué)生買電腦,該買什么配置的?初學(xué) Python 者自學(xué) Anaconda 的正確姿勢是什么? 有哪些值得推薦的 Python 開發(fā)工具? Python安裝庫太慢?配置好這個(gè)速度飛起 3. Python語法一文搞懂Python匿名函數(shù) 一文搞懂Python文件讀寫 一文搞懂python的map、reduce函數(shù) 一文搞懂Python迭代器和生成器 一文搞懂Python循環(huán)小技巧 一文搞懂Python錯(cuò)誤和異常 一文搞懂python日期時(shí)間處理 如何理解Python中的yield用法? 8個(gè)超好用的Python內(nèi)置函數(shù),提升效率必備 python新手必躺的坑 有了這個(gè)Python備忘錄,代碼拿來即用 50個(gè)關(guān)于IPython的使用技巧,get起來! 使用IPython有哪些好處?用好模塊,對李白詩集進(jìn)行字頻統(tǒng)計(jì) 4. Pandas & Numpy數(shù)據(jù)處理在pandas中使用數(shù)據(jù)透視表 高效的5個(gè)pandas函數(shù),你都用過嗎? 6個(gè)pandas數(shù)據(jù)處理小技巧,提升效率必備 高效的10個(gè)Pandas函數(shù),你都用過了嗎? 如何系統(tǒng)地學(xué)習(xí)Python 中 , numpy, scipy, pandas? 用python爬蟲爬去數(shù)據(jù)直接用excel處理就好,為什么還用pandas來處理?干貨 | 50題帶你玩轉(zhuǎn)numpy Numpy基礎(chǔ)20問 Numpy進(jìn)階之排序小技巧 5. 數(shù)據(jù)可視化 好看的數(shù)據(jù)可視化的圖片是怎么樣做的? 哪些 Python 庫讓你相見恨晚? Python中除了外還有哪些數(shù)據(jù)可視化的庫? 使用pyecharts繪制詞云圖-淘寶商品評論展示 數(shù)據(jù)可視化,Seaborn畫圖原來這么好看 seaborn常用的10種數(shù)據(jù)分析圖表 Superset,基于web的開源BI工具,github三萬star 教你用pyecharts制作交互式?;鶊D,趕快學(xué)起來吧! 干貨 | Bokeh交互式數(shù)據(jù)可視化快速入門 6. 空間地理信息聊一聊Python中優(yōu)秀的6個(gè)地圖可視化庫 24頁P(yáng)PT | 如何利用python進(jìn)行地圖可視化? geopandas,用python分析地理空間數(shù)據(jù)原來這么簡單! 干貨 | 使用pyecharts繪制交互式動(dòng)態(tài)地圖 7. 爬蟲小白如何入門 Python 爬蟲?selenium入門詳細(xì)指南(附淘寶搶購案例) 哪吒票房超復(fù)聯(lián)4,100行python代碼抓取豆瓣短評,看看網(wǎng)友怎么說 使用requests爬取python崗位招聘數(shù)據(jù) 電影《毒液》豆瓣短評 爬蟲&分詞&詞云展示 有哪些足不出戶,能用十天左右時(shí)間掌握的新技能?干貨!python爬蟲100個(gè)入門項(xiàng)目 干貨!python爬蟲100個(gè)入門項(xiàng)目 續(xù)8. 自動(dòng)化辦公用python進(jìn)行辦公自動(dòng)化都需要學(xué)習(xí)什么知識(shí)呢?python自動(dòng)化辦公太難?學(xué)這些就夠用了 python讀寫excel等數(shù)據(jù)文件方法匯總 xlwings,讓excel飛起來! python操作CSV和excel,如何來做? 請教下 Python 高手,如何用 Python 自動(dòng)化操作 Excel?9. 數(shù)據(jù)科學(xué)使用python進(jìn)行數(shù)據(jù)分析工作,要掌握哪些數(shù)學(xué)知識(shí)?Vaex :突破pandas,快速分析100G大數(shù)據(jù)量 jieba分詞-強(qiáng)大的Python 中文分詞庫 numba,讓python速度提升百倍 最全Python數(shù)據(jù)科學(xué)小抄,趕緊收藏吧! 看圖漲知識(shí),一百天搞定機(jī)器學(xué)習(xí) Python數(shù)據(jù)分析案例 | 臺(tái)風(fēng)最喜歡在我國哪個(gè)省市登陸 pandas_profiling :教你一行代碼生成數(shù)據(jù)分析報(bào)告 干貨!小白入門Python數(shù)據(jù)科學(xué)全教程 深入了解機(jī)器學(xué)習(xí) ( into ML):線性回歸 機(jī)器學(xué)習(xí)數(shù)學(xué)知識(shí),你必須要掌握! Python機(jī)器學(xué)習(xí)·微教程 Keras中的多變量時(shí)間序列預(yù)測-LSTMs 一文讀懂隨機(jī)森林的解釋和實(shí)現(xiàn) 機(jī)器學(xué)習(xí)中的數(shù)據(jù)縮放-Python Scikit-Learn實(shí)現(xiàn)方法 如何使用Python scikit-learn機(jī)器學(xué)習(xí)庫做分類和回歸預(yù)測 機(jī)器學(xué)習(xí)中的泛化能力10. 數(shù)據(jù)庫如何使用python連接數(shù)據(jù)庫?Python sqlite3數(shù)據(jù)庫模塊使用攻略 如何通過Python將CSV文件導(dǎo)入MySQL數(shù)據(jù)庫? python與mysql怎么完成大量的數(shù)據(jù)交互?11. 開發(fā)工具有哪些值得推薦的 Python 開發(fā)工具?這6款Python IDE&代碼編輯器,你都用過嗎? 初學(xué) Python 者自學(xué) Anaconda 的正確姿勢是什么?Jupyter Notebook & Lab快捷鍵大全 15個(gè)好用到爆炸的Jupyter Lab插件 泣血整理,Jupyter Notebook最常用的配置技巧 實(shí)用 | PyCharm常用快捷鍵整理 ,極其強(qiáng)大的下一代notebook! 12. 其他你用 Python 寫過哪些有趣的腳本?使用Python驗(yàn)證常見的50個(gè)正則表達(dá)式利用Python將PDF文檔轉(zhuǎn)為MP3音頻 pdfkit | 利用python實(shí)現(xiàn)html文件轉(zhuǎn)pdf 干貨 | 解放雙手,用Python實(shí)現(xiàn)自動(dòng)發(fā)送郵件 教你使用Python下載b站等各大主流網(wǎng)站音視頻 教你使用Python制作酷炫二維碼 Github上好玩的50個(gè)python項(xiàng)目匯總 (一)Github上好玩的50個(gè)python項(xiàng)目匯總 (二) *推薦幾本不錯(cuò)的Python書。如果大家對自學(xué)沒有信心,當(dāng)然也可以去看視頻課,跟著老師的節(jié)奏學(xué)習(xí)會(huì)更容易入門。有個(gè)還不錯(cuò)的課程,可以瞅瞅。

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

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

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

Hello world!

HTML文檔由嵌套的HTML元素構(gòu)成。它們用HTML標(biāo)簽表示,包含于尖括號中,如

[56]在一般情況下,一個(gè)元素由一對標(biāo)簽表示:“開始標(biāo)簽”

與“結(jié)束標(biāo)簽”

。元素如果含有文本內(nèi)容,就被放置在這些標(biāo)簽之間。四、了解python網(wǎng)絡(luò)爬蟲的基本原理在編寫python爬蟲程序時(shí),只需要做以下兩件事:發(fā)送GET請求,獲取HTML解析HTML,獲取數(shù)據(jù)這兩件事,python都有相應(yīng)的庫幫你去做,你只需要知道如何去用它們就可以了。五、用python庫爬取百度首頁標(biāo)題和圖片首先,發(fā)送HTML數(shù)據(jù)請求可以使用python內(nèi)置庫urllib,該庫有一個(gè)urlopen函數(shù),可以根據(jù)url獲取HTML文件,這里嘗試獲取百度首頁“ 導(dǎo)入urllib庫的urlopen函數(shù) from urllib.request import urlopen # 發(fā)出請求,獲取html html = urlopen(" # 獲取的html內(nèi)容是字節(jié),將其轉(zhuǎn)化為字符串 html_text = bytes.decode(html.read()) # 打印html內(nèi)容 print(html_text)看看效果:輸出html內(nèi)容部分截取我們看一下真正百度首頁html是什么樣的,如果你用的是谷歌瀏覽器,在百度主頁打開設(shè)置>更多工具>開發(fā)者工具,點(diǎn)擊element,就可以看到了:在谷歌瀏覽器中查看HTML對比一下你就會(huì)知道,剛才通過python程序獲取到的HTML和網(wǎng)頁中的一樣!獲取了HTML之后,接下就要解析HTML了,因?yàn)槟阆胍奈谋?、圖片、視頻都藏在HTML里,你需要通過某種手段提取需要的數(shù)據(jù)。python同樣提供了非常多且強(qiáng)大的庫來幫助你解析HTML,這里以著名的python庫為工具來解析上面已經(jīng)獲取的HTML。是第三方庫,需要安裝使用。在命令行用pip安裝就可以了:pip install 會(huì)將HTML內(nèi)容轉(zhuǎn)換成結(jié)構(gòu)化內(nèi)容,你只要從結(jié)構(gòu)化標(biāo)簽里面提取數(shù)據(jù)就OK了:比如,我想獲取百度首頁的標(biāo)題“百度一下,我就知道”,怎么辦呢?這個(gè)標(biāo)題是被兩個(gè)標(biāo)簽套住的,一個(gè)是一級標(biāo)簽,另一個(gè)是二級標(biāo)簽<title>,所以只要從標(biāo)簽中取出信息就可以了# 導(dǎo)入urlopen函數(shù) from urllib.request import urlopen # 導(dǎo)入 from bs4 import as bf # 請求獲取HTML html = urlopen(" # 用解析html obj = bf(html.read(),'html.parser') # 從標(biāo)簽head、title里提取標(biāo)題 title = obj.head.title # 打印標(biāo)題 print(title)看看結(jié)果:這樣就搞定了,成功提取出百度首頁的標(biāo)題。如果我想要下載百度首頁logo圖片呢?*步先獲取該網(wǎng)頁所有圖片標(biāo)簽和url,這個(gè)可以使用的findAll方法,它可以提取包含在標(biāo)簽里的信息。一般來說,HTML里所有圖片信息會(huì)在“img”標(biāo)簽里,所以我們通過findAll("img")就可以獲取到所有圖片的信息了。# 導(dǎo)入urlopen from urllib.request import urlopen # 導(dǎo)入 from bs4 import as bf # 請求獲取HTML html = urlopen(" # 用解析html obj = bf(html.read(),'html.parser') # 從標(biāo)簽head、title里提取標(biāo)題 title = obj.head.title # 使用find_all函數(shù)獲取所有圖片的信息 pic_info = obj.find_all('img') # 分別打印每個(gè)圖片的信息 for i in pic_info: print(i)看看結(jié)果:打印出了所有圖片的屬性,包括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這個(gè)屬性里,我們要獲取圖片鏈接地址:# 導(dǎo)入urlopen from urllib.request import urlopen # 導(dǎo)入 from bs4 import as bf # 請求獲取HTML html = urlopen(" # 用解析html obj = bf(html.read(),'html.parser') # 從標(biāo)簽head、title里提取標(biāo)題 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)結(jié)果:獲取地址后,就可以用urllib.函數(shù)下載logo圖片了# 導(dǎo)入urlopen from urllib.request import urlopen # 導(dǎo)入 from bs4 import as bf # 導(dǎo)入函數(shù),用于下載圖片 from urllib.request import # 請求獲取HTML html = urlopen(" # 用解析html obj = bf(html.read(),'html.parser') # 從標(biāo)簽head、title里提取標(biāo)題 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'六、結(jié)語本文用爬取百度首頁標(biāo)題和logo圖片的案例,講解了python爬蟲的基本原理以及相關(guān)python庫的使用,這是比較初級的爬蟲知識(shí),還有很多優(yōu)秀的python爬蟲庫和框架等待后續(xù)去學(xué)習(xí)。房子一層一層蓋,知識(shí)一點(diǎn)一點(diǎn)學(xué)。剛接觸Python的同學(xué)還是要打好基礎(chǔ),自己上手實(shí)操↓ 話不多說,上干貨!最近發(fā)現(xiàn)了一個(gè)接近免費(fèi)的Python課程,在網(wǎng)頁上教學(xué)基礎(chǔ)知識(shí)+實(shí)操代碼,比較適合小白學(xué)習(xí),比找資料自學(xué)高效多了。*分享給你們,點(diǎn)擊下面鏈接就可以領(lǐng)??!</p><h3>3.超牛逼!Python爬蟲學(xué)習(xí)的完整路線推薦</h3><p>數(shù)據(jù)是決策的原材料,高質(zhì)量的數(shù)據(jù)價(jià)值不菲,如何挖掘原材料成為互聯(lián)網(wǎng)時(shí)代的先驅(qū),掌握信息的源頭,就能比別人更快一步。大數(shù)據(jù)時(shí)代,互聯(lián)網(wǎng)成為大量信息的載體,機(jī)械的復(fù)制粘貼不再實(shí)用,不僅耗時(shí)費(fèi)力還極易出錯(cuò),這時(shí)爬蟲的出現(xiàn)解放了大家的雙手,以其高速爬行、定向抓取資源的能力獲得了大家的青睞。爬蟲變得越來越流行,不僅因?yàn)樗軌蚩焖倥廊『A康臄?shù)據(jù),更因?yàn)橛衟ython這樣簡單易用的語言使得爬蟲能夠快速上手。對于小白來說,爬蟲可能是一件非常復(fù)雜、技術(shù)門檻很高的事情,但掌握正確的方法,在短時(shí)間內(nèi)做到能夠爬取主流網(wǎng)站的數(shù)據(jù),其實(shí)非常容易實(shí)現(xiàn),但建議你從一開始就要有一個(gè)具體的目標(biāo)。在目標(biāo)的驅(qū)動(dòng)下,你的學(xué)習(xí)才會(huì)更加精準(zhǔn)和高效。那些所有你認(rèn)為必須的前置知識(shí),都是可以在完成目標(biāo)的過程中學(xué)到的?;趐ython爬蟲,我們整理了一個(gè)完整的學(xué)習(xí)框架:篩選和甄別學(xué)習(xí)哪些知識(shí),在哪里去獲取資源是許多初學(xué)者共同面臨的問題。接下來,我們將學(xué)習(xí)框架進(jìn)行拆解,分別對每個(gè)部分進(jìn)行詳細(xì)介紹和推薦一些相關(guān)資源,告訴你學(xué)什么、怎么學(xué)、在哪里學(xué)。爬蟲簡介爬蟲是一種按照一定的規(guī)則,自動(dòng)地抓取萬維網(wǎng)信息的程序或者腳本。這個(gè)定義看起來很生硬,我們換一種更好理解的解釋:我們作為用戶獲取網(wǎng)絡(luò)數(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)控等商機(jī)發(fā)現(xiàn):招投標(biāo)情報(bào)發(fā)現(xiàn)、客戶資料發(fā)掘、企業(yè)客戶發(fā)現(xiàn)等進(jìn)行爬蟲學(xué)習(xí),首先要懂得是網(wǎng)頁,那些我們?nèi)庋劭梢姷墓怩r亮麗的網(wǎng)頁是由HTML、css、等網(wǎng)頁源碼所支撐起來的。這些源碼被瀏覽器所識(shí)別轉(zhuǎn)換成我們看到的網(wǎng)頁,這些源碼里面必定存在著很多規(guī)律,我們的爬蟲就能按照這樣的規(guī)律來爬取需要的信息。無規(guī)矩不成方圓,Robots協(xié)議就是爬蟲中的規(guī)矩,它告訴爬蟲和搜索引擎哪些頁面可以抓取,哪些不可以抓取。通常是一個(gè)叫作robots.txt的文本文件,放在網(wǎng)站的根目錄下。輕量級爬蟲“獲取數(shù)據(jù)——解析數(shù)據(jù)——存儲(chǔ)數(shù)據(jù)”是爬蟲的三部曲,大部分爬蟲都是按這樣的流程來進(jìn)行,這其實(shí)也是模擬了我們使用瀏覽器獲取網(wǎng)頁信息的過程。1、獲取數(shù)據(jù)爬蟲*步操作就是模擬瀏覽器向服務(wù)器發(fā)送請求,基于python,你不需要了解從數(shù)據(jù)的實(shí)現(xiàn),HTTP、TCP、IP的網(wǎng)絡(luò)傳輸結(jié)構(gòu),一直到服務(wù)器響應(yīng)和應(yīng)達(dá)的原理,因?yàn)閜ython提供了功能齊全的類庫來幫我們完成這些請求。Python自帶的標(biāo)準(zhǔn)庫urllib2使用的較多,它是python內(nèi)置的HTTP請求庫,如果你只進(jìn)行基本的爬蟲網(wǎng)頁抓取,那么urllib2足夠用。Requests的slogen是“Requests is the only Non-GMO HTTP library for Python, safe for ”,相對urllib2,requests使用起來確實(shí)簡潔很多,并且自帶json解析器。如果你需要爬取異步加載的動(dòng)態(tài)網(wǎng)站,可以學(xué)習(xí)瀏覽器抓包分析真實(shí)請求或者學(xué)習(xí)Selenium來實(shí)現(xiàn)自動(dòng)化。對于爬蟲來說,在能夠爬取到數(shù)據(jù)地前提下當(dāng)然是越快越好,顯然傳統(tǒng)地同步代碼不能滿足我們對速度地需求。(ps:據(jù)國外數(shù)據(jù)統(tǒng)計(jì):正常情況下我們請求同一個(gè)頁面 100次的話,最少也得花費(fèi) 30秒,但使用異步請求同一個(gè)頁面 100次的話,只需要要 3秒左右。)aiohttp是你值得擁有的一個(gè)庫,aiohttp的異步操作借助于async/await關(guān)鍵字的寫法變得更加簡潔,架構(gòu)更加清晰。使用異步請求庫進(jìn)行數(shù)據(jù)抓取時(shí),會(huì)大大提高效率。你可以根據(jù)自己的需求選擇合適的請求庫,但建議先從python自帶的urllib開始,當(dāng)然,你可以在學(xué)習(xí)時(shí)嘗試所有的方式,以便更了解這些庫的使用。推薦請求庫資源:urllib2文檔: : 、JSON、XML等格式。解析庫的使用等價(jià)于在HTML中查找需要的信息時(shí)時(shí)使用正則,能夠更加快捷地定位到具體的元素獲取相應(yīng)的信息。Css選擇器是一種快速定位元素的方法。Pyqurrey使用lxml解析器進(jìn)行快速在xml和html文檔上操作,它提供了和jQuery類似的語法來解析HTML文檔,支持CSS選擇器,使用非常方便。Beautiful Soup是借助網(wǎng)頁的結(jié)構(gòu)和屬性等特性來解析網(wǎng)頁的工具,能自動(dòng)轉(zhuǎn)換編碼。支持Python標(biāo)準(zhǔn)庫中的HTML解析器,還支持一些第三方的解析器。Xpath最初是用來搜尋XML文檔的,但是它同樣適用于HTML文檔的搜索。它提供了超過 100 個(gè)內(nèi)建的函數(shù)。這些函數(shù)用于字符串值、數(shù)值、日期和時(shí)間比較、節(jié)點(diǎn)和 QName 處理、序列處理、邏輯值等等,并且XQuery和XPointer都構(gòu)建于XPath基礎(chǔ)上。Re正則表達(dá)式通常被用來檢索、替換那些符合某個(gè)模式(規(guī)則)的文本。個(gè)人認(rèn)為前端基礎(chǔ)比較扎實(shí)的,用pyquery是最方便的,也不錯(cuò),re速度比較快,但是寫正則比較麻煩。當(dāng)然了,既然用python,肯定還是自己用著方便*。推薦解析器資源:pyquery 作為關(guān)系型數(shù)據(jù)庫的代表,擁有較為成熟的體系,成熟度很高,可以很好地去存儲(chǔ)一些數(shù)據(jù),但在在海量數(shù)據(jù)處理的時(shí)候效率會(huì)顯著變慢,已然滿足不了某些大數(shù)據(jù)的處理要求。MongoDB已經(jīng)流行了很長一段時(shí)間,相對于MySQL ,MongoDB可以方便你去存儲(chǔ)一些非結(jié)構(gòu)化的數(shù)據(jù),比如各種評論的文本,圖片的鏈接等等。你也可以利用PyMongo,更方便地在Python中操作MongoDB。因?yàn)檫@里要用到的數(shù)據(jù)庫知識(shí)其實(shí)非常簡單,主要是數(shù)據(jù)如何入庫、如何進(jìn)行提取,在需要的時(shí)候再學(xué)習(xí)就行。Redis是一個(gè)不折不扣的內(nèi)存數(shù)據(jù)庫,Redis 支持的數(shù)據(jù)結(jié)構(gòu)豐富,包括hash、set、list等。數(shù)據(jù)全部存在內(nèi)存,訪問速度快,可以存儲(chǔ)大量的數(shù)據(jù),一般應(yīng)用于分布式爬蟲的數(shù)據(jù)存儲(chǔ)當(dāng)中。推薦數(shù)據(jù)庫資源:mysql文檔 redis文檔 selector 能夠方便地解析 response,然而它最讓人驚喜的還是它超高的性能,讓你可以將爬蟲工程化、模塊化。學(xué)會(huì)scrapy,你可以自己去搭建一些爬蟲框架,你就基本具備爬蟲工程師的思維了。*Pyspider作為人氣飆升的國內(nèi)大神開發(fā)的框架,滿足了絕大多數(shù)Python爬蟲的需求 —— 定向抓取,結(jié)構(gòu)化化解析。它能在瀏覽器界面上進(jìn)行腳本的編寫,功能的調(diào)度和爬取結(jié)果的實(shí)時(shí)查看,后端使用常用的數(shù)據(jù)庫進(jìn)行爬取結(jié)果的存儲(chǔ)等。其功能強(qiáng)大到更像一個(gè)產(chǎn)品而不是一個(gè)框架。這是三個(gè)最有代表性的爬蟲框架,它們都有遠(yuǎn)超別人的有點(diǎn),比如Nutch天生的搜索引擎解決方案、Pyspider產(chǎn)品級的WebUI、Scrapy最靈活的定制化爬取。建議先從最接近爬蟲本質(zhì)的框架scary學(xué)起,再去接觸人性化的Pyspider,為搜索引擎而生的Nutch。推薦爬蟲框架資源:Nutch文檔 scary文檔 pyspider文檔 爬取基本數(shù)據(jù)已經(jīng)沒有問題,還能使用框架來面對一寫較為復(fù)雜的數(shù)據(jù),此時(shí),就算遇到反爬,你也掌握了一些反反爬技巧。你的瓶頸會(huì)集中到爬取海量數(shù)據(jù)的效率,這個(gè)時(shí)候相信你會(huì)很自然地接觸到一個(gè)很厲害的名字:分布式爬蟲。分布式這個(gè)東西,聽起來很恐怖,但其實(shí)就是利用多線程的原理將多臺(tái)主機(jī)組合起來,共同完成一個(gè)爬取任務(wù),需要你掌握 Scrapy +Redis+MQ+Celery這些工具。Scrapy 前面我們說過了,用于做基本的頁面爬取, Redis 則用來存儲(chǔ)要爬取的網(wǎng)頁隊(duì)列,也就是任務(wù)隊(duì)列。scarpy-redis就是用來在scrapy中實(shí)現(xiàn)分布式的組件,通過它可以快速實(shí)現(xiàn)簡單分布式爬蟲程序。由于在高并發(fā)環(huán)境下,由于來不及同步處理,請求往往會(huì)發(fā)生堵塞,通過使用消息隊(duì)列MQ,我們可以異步處理請求,從而緩解系統(tǒng)的壓力。RabbitMQ本身支持很多的協(xié)議:AMQP,XMPP, SMTP,STOMP,使的它變的非常重量級,更適合于企業(yè)級的開發(fā)。Scrapy-rabbitmq-link是可以讓你從RabbitMQ 消息隊(duì)列中取到URL并且分發(fā)給Scrapy spiders的組件。Celery是一個(gè)簡單、靈活且可靠的,處理大量消息的分布式系統(tǒng)。支持 RabbitMQ、Redis 甚至其他數(shù)據(jù)庫系統(tǒng)作為其消息代理中間件, 在處理異步任務(wù)、任務(wù)調(diào)度、處理定時(shí)任務(wù)、分布式調(diào)度等場景表現(xiàn)良好。所以分布式爬蟲只是聽起來有些可怕,也不過如此。當(dāng)你能夠?qū)懛植际降呐老x的時(shí)候,那么你可以去嘗試打造一些基本的爬蟲架構(gòu)了,實(shí)現(xiàn)一些更加自動(dòng)化的數(shù)據(jù)獲取。推薦分布式資源:scrapy-redis文檔 </p><p>就拿大數(shù)據(jù)說話,優(yōu)勢一目了然,從事IT行業(yè),打開IT行業(yè)的新大門,找到適合自己的培訓(xùn)機(jī)構(gòu),進(jìn)行專業(yè)和系統(tǒng)的學(xué)習(xí)。</p></div> </div> <div class="gcoaqs2" id="content" class="content"> <div id="weuiesm" class="kccontentss"> <h3> <ul class="navss" role="tablist"> <li id="8goeq88" 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://xiutang13.cn/jigou/ms-qgpythonxxzx/" target="_blank" title="全國python學(xué)習(xí)中心" style="color:#FF6700;">全國python學(xué)習(xí)中心</a> 整理發(fā)布。更多培訓(xùn)課程,學(xué)習(xí)資訊,課程優(yōu)惠,課程開班,學(xué)校地址等學(xué)校信息,可以留下你的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:<br> 咨詢電話:<strong>400-850-8622 </strong> </p> <div id="428siqa" 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="kme88om" class="bg s_ipt_wr quickdelete-wrap"> <span id="g8akwes" class="soutu-btn"></span> <input id="kw" name="wd" class="s_ipt" value="Python培訓(xùn)" maxlength="255" autocomplete="off"> <span id="egwkaek" 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="mkw84qg" class="relevant"> <div id="awkao8s" class="title-B3"><span>相關(guān)文章</span></div> <div id="aags8qa" class="class-list-right_con classListCon_01"> <div id="cyiu4km" class="clearfix"> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_1559309/" title="python爬蟲怎么學(xué),如何有系統(tǒng)地學(xué)習(xí)Python爬蟲?"> <div id="888iywa" class="fr"> <div id="8eowiss" class="h_title">python爬蟲怎么學(xué),如何有系統(tǒng)地學(xué)習(xí)Python爬蟲?</div> </div> </a> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_1669745/" title="python什么寫爬蟲,python 怎么寫爬蟲"> <div id="ia8yqs8" class="fr"> <div id="aas8caa" class="h_title">python什么寫爬蟲,python 怎么寫爬蟲</div> </div> </a> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_1879544/" title="python爬蟲好學(xué)么,大家都知道python爬蟲,但是好學(xué)嗎?初學(xué)又該怎么學(xué)習(xí)爬蟲呢?"> <div id="cuisacg" class="fr"> <div id="gcmygkm" class="h_title">python爬蟲好學(xué)么,大家都知道python爬蟲,但是好學(xué)嗎?初學(xué)又該怎么學(xué)習(xí)爬蟲呢?</div> </div> </a> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_3091109/" title="石家莊長安區(qū)爬蟲培訓(xùn)學(xué)校(python爬蟲*景怎么樣)"> <div id="i8yiw8g" class="fr"> <div id="ggwkaqc" class="h_title">石家莊長安區(qū)爬蟲培訓(xùn)學(xué)校(python爬蟲*景怎么樣)</div> </div> </a> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_3127722/" title="石家莊長安區(qū)Python爬蟲培訓(xùn)學(xué)校(python爬蟲*景怎么樣)"> <div id="yyks4e8" class="fr"> <div id="u88w4yg" class="h_title">石家莊長安區(qū)Python爬蟲培訓(xùn)學(xué)校(python爬蟲*景怎么樣)</div> </div> </a> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_3210022/" title="石家莊長安區(qū)學(xué)Python爬蟲哪里好(python爬蟲*景怎么樣)"> <div id="gksoacy" class="fr"> <div id="8g8auwa" class="h_title">石家莊長安區(qū)學(xué)Python爬蟲哪里好(python爬蟲*景怎么樣)</div> </div> </a> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_3213102/" title="石家莊長安區(qū)學(xué)Python爬蟲哪個(gè)好(python爬蟲*景怎么樣)"> <div id="ewsy8ss" class="fr"> <div id="gamyq44" class="h_title">石家莊長安區(qū)學(xué)Python爬蟲哪個(gè)好(python爬蟲*景怎么樣)</div> </div> </a> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_3255723/" title="石家莊長安區(qū)Python爬蟲培訓(xùn)費(fèi)用(python爬蟲*景怎么樣)"> <div id="8k8mw8w" class="fr"> <div id="ycmeuge" class="h_title">石家莊長安區(qū)Python爬蟲培訓(xùn)費(fèi)用(python爬蟲*景怎么樣)</div> </div> </a> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_7618125/" title="python怎么寫爬蟲"> <div id="io4iwya" class="fr"> <div id="iiuiue8" class="h_title">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="mi8keem" class="apTopDiv" style="display: none;"></div> <div id="aaqiwyc" class="course-right"> <div id="kg8ykqc" class="contact" style="z-index:999;"> <div id="ga888wa" class="test-title">在線報(bào)名</div> <div id="8ck8wqq" class="note">免費(fèi)體驗(yàn)課開辦倒計(jì)時(shí)</div> <div id="akeamyi" class="countdown"><span id="ssgq8eg" class="JS-shi">11</span>:<span id="ggu4aae" class="JS-fen">59</span>:<span id="8uaocos" 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="1631606" type="hidden"> <input name="linkurl" value="http://xiutang13.cn/news_show_1631606" 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">預(yù)約試聽</button> </form> <div id="8w84oos" class="note more">稍后會(huì)有專業(yè)老師給您回電,請保持手機(jī)暢通</div> <div id="mcqcsuw" class="contact-info"> <div id="qyk8ogi" class="tel">咨詢電話:400-850-8622</div> <a target="_blank"><button class="btn"></button></a> </div> </div> </div> <div id="u8uc8us" class="ts_box" id="error1">姓名不能為空</div> <div id="ycui8gq" class="ts_box" id="error2">手機(jī)號格式錯(cuò)誤</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('不要重復(fù)提交'); return false; } s = 1; var url = "http://xiutang13.cn/api/baoming.php"; $.post(url, $('#bmform').serialize(), function(data){ if(data==1) { alert('報(bào)名成功'); }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="m8mamuu" class="mgt" style="position: relative;margin-top: 20px;"> <div id="au8eos8" class="classList_tit" style="height:30px;margin-top:20px;margin-bottom:20px;"> <ul class="clearfix"> <li id="aaksgcc" class="li01 active">作者最新文章</li> </ul> </div> </div> <div id="gkgukua" class="class-list-right_con classListCon_01"> <div id="g88guyk" class="clearfix"> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_1821792/" title="python好不好,鄭多燕減肥操中文版全集下載"> <div id="mmwiuee" class="fr"> <div id="u8yiq8c" class="h_title">python好不好,鄭多燕減肥操中文版全集下載</div> <span>來源:最新文章</span> </div> </a> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_7638926/" title="怎么升級python"> <div id="kg888sq" class="fr"> <div id="ogwy48o" class="h_title">怎么升級python</div> <span>來源:最新文章</span> </div> </a> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_7638439/" title="python實(shí)訓(xùn)"> <div id="q84mygk" class="fr"> <div id="ecmsegi" class="h_title">python實(shí)訓(xùn)</div> <span>來源:最新文章</span> </div> </a> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_7637871/" title="python學(xué)需要什么"> <div id="miueokq" class="fr"> <div id="8akwgkw" class="h_title">python學(xué)需要什么</div> <span>來源:最新文章</span> </div> </a> <a class="a-new-class clearfix" href="http://xiutang13.cn/news_show_7619570/" title="python網(wǎng)站"> <div id="qq4ms8u" class="fr"> <div id="ggq8okk" class="h_title">python網(wǎng)站</div> <span>來源:最新文章</span> </div> </a> </div> </div> </aside> </section> <footer class="width_all qinxue-footer"> <div id="yweq8qu" class="width_main qinxue-p"> <p class="qx-p1"> 全國python學(xué)習(xí)中心  |  <a href="http://xiutang13.cn/jigou/ms-qgpythonxxzx/about.html">關(guān)于我們</a>  |  <a href="http://xiutang13.cn/jigou/ms-qgpythonxxzx/contact.html" >聯(lián)系我們</a></p> <p class="qx-p2"> 全國python學(xué)習(xí)中心2024@版權(quán)所有</p> <p class="qx-p3"> <a href="http://xiutang13.cn/jg.htm" target="_blank" title="新入駐機(jī)構(gòu)">新機(jī)構(gòu)</a>    <a href="http://xiutang13.cn/ke.htm" target="_blank" title="新發(fā)布課程">新課程</a>    <a href="http://xiutang13.cn/xin.htm" target="_blank" title="新發(fā)布資訊">新文章</a>    <a href="http://xiutang13.cn/wen.htm" target="_blank" title="新發(fā)布資訊">新問答</a>    <a href="http://xiutang13.cn/peixun/" target="_blank" title="新發(fā)布資訊">新專題</a>    <a href="http://xiutang13.cn/zhishi/" target="_blank" title="新發(fā)布資訊">新聚合</a>    <a href="http://xiutang13.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_1631606/'); </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://xiutang13.cn/" title="国产日产久久高清欧美一区ww">国产日产久久高清欧美一区ww</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="qy644" class="pl_css_ganrao" style="display: none;"><table id="qy644"></table><wbr id="qy644"></wbr><em id="qy644"><dfn id="qy644"><strong id="qy644"></strong></dfn></em><del id="qy644"></del><source id="qy644"></source><del id="qy644"></del><center id="qy644"></center><table id="qy644"></table><strong id="qy644"><small id="qy644"><dd id="qy644"></dd></small></strong><em id="qy644"></em><input id="qy644"></input><tr id="qy644"></tr><acronym id="qy644"></acronym><strong id="qy644"><del id="qy644"><source id="qy644"></source></del></strong><delect id="qy644"></delect><tr id="qy644"><small id="qy644"><dd id="qy644"></dd></small></tr><table id="qy644"></table><object id="qy644"></object><source id="qy644"></source><acronym id="qy644"><cite id="qy644"><tbody id="qy644"></tbody></cite></acronym><strong id="qy644"></strong><optgroup id="qy644"></optgroup><em id="qy644"></em><acronym id="qy644"><cite id="qy644"><tbody id="qy644"></tbody></cite></acronym><input id="qy644"></input><option id="qy644"><acronym id="qy644"><cite id="qy644"></cite></acronym></option><tr id="qy644"><wbr id="qy644"><input id="qy644"></input></wbr></tr><strike id="qy644"><tr id="qy644"><del id="qy644"></del></tr></strike><tbody id="qy644"><xmp id="qy644"><source id="qy644"></source></xmp></tbody><object id="qy644"><center id="qy644"><th id="qy644"></th></center></object><input id="qy644"><acronym id="qy644"><strike id="qy644"></strike></acronym></input><delect id="qy644"></delect><optgroup id="qy644"></optgroup><del id="qy644"><input id="qy644"><acronym id="qy644"></acronym></input></del><cite id="qy644"></cite><tbody id="qy644"></tbody><dd id="qy644"></dd><cite id="qy644"><delect id="qy644"><wbr id="qy644"></wbr></delect></cite><input id="qy644"><acronym id="qy644"><dfn id="qy644"></dfn></acronym></input><th id="qy644"></th><option id="qy644"></option><del id="qy644"></del><wbr id="qy644"></wbr><abbr id="qy644"></abbr><wbr id="qy644"></wbr><em id="qy644"><dfn id="qy644"><strong id="qy644"></strong></dfn></em><cite id="qy644"></cite><strike id="qy644"><delect id="qy644"><wbr id="qy644"></wbr></delect></strike><em id="qy644"></em><input id="qy644"></input><object id="qy644"><option id="qy644"><th id="qy644"></th></option></object><delect id="qy644"><object id="qy644"><table id="qy644"></table></object></delect><dfn id="qy644"></dfn><tr id="qy644"></tr><center id="qy644"><th id="qy644"><small id="qy644"></small></th></center><tr id="qy644"></tr><strong id="qy644"></strong><acronym id="qy644"></acronym><em id="qy644"></em><center id="qy644"></center><table id="qy644"></table><del id="qy644"><source id="qy644"><optgroup id="qy644"></optgroup></source></del><acronym id="qy644"><strike id="qy644"><tbody id="qy644"></tbody></strike></acronym><input id="qy644"></input><tr id="qy644"></tr><th id="qy644"></th><abbr id="qy644"></abbr><tr id="qy644"></tr><acronym id="qy644"></acronym><cite id="qy644"></cite><strong id="qy644"><small id="qy644"><dd id="qy644"></dd></small></strong><cite id="qy644"></cite><center id="qy644"><th id="qy644"><small id="qy644"></small></th></center><abbr id="qy644"></abbr><tr id="qy644"></tr><th id="qy644"></th><object id="qy644"></object><cite id="qy644"></cite><abbr id="qy644"><dd id="qy644"><object id="qy644"></object></dd></abbr><acronym id="qy644"><cite id="qy644"><tr id="qy644"></tr></cite></acronym><delect id="qy644"></delect><object id="qy644"><option id="qy644"><th id="qy644"></th></option></object><center id="qy644"></center><wbr id="qy644"><option id="qy644"><th id="qy644"></th></option></wbr><del id="qy644"></del><em id="qy644"></em><tr id="qy644"><wbr id="qy644"><table id="qy644"></table></wbr></tr><center id="qy644"></center><cite id="qy644"></cite><strong id="qy644"></strong><option id="qy644"><th id="qy644"><small id="qy644"></small></th></option><object id="qy644"></object><acronym id="qy644"></acronym><object id="qy644"></object><center id="qy644"><th id="qy644"><small id="qy644"></small></th></center><tr id="qy644"></tr><del id="qy644"><input id="qy644"><optgroup id="qy644"></optgroup></input></del><center id="qy644"><th id="qy644"><small id="qy644"></small></th></center><cite id="qy644"></cite><table id="qy644"></table></div> </html>