bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

Python中關于數(shù)據(jù)采集和解析是怎樣的

本篇文章為大家展示了Python中關于數(shù)據(jù)采集和解析是怎樣的,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,錫山企業(yè)網(wǎng)站建設,錫山品牌網(wǎng)站建設,網(wǎng)站定制,錫山網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,錫山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

我們已經(jīng)了解到了開發(fā)一個爬蟲需要做的工作以及一些常見的問題,下面我們給出一個爬蟲開發(fā)相關技術的清單以及這些技術涉及到的標準庫和第三方庫,稍后我們會一一介紹這些內(nèi)容。

  1. 下載數(shù)據(jù) - urllib / requests / aiohttp。

  2. 解析數(shù)據(jù) - re / lxml / beautifulsoup4 / pyquery。

  3. 緩存和持久化 - pyMySQL / sqlalchemy / peewee/ redis / pymongo。

  4. 生成數(shù)字簽名 - hashlib。

  5. 序列化和壓縮 - pickle / json / zlib。

  6. 調(diào)度器 - 多進程(multiprocessing) / 多線程(threading)。

HTML頁面

<!DOCTYPE html>
<html>
 <head>
 <title>Home</title>
 <style type="text/css">
 /* 此處省略層疊樣式表代碼 */
 </style>
 </head>
 <body>
 <div>
 <header>
 <h2>Yoko's Kitchen</h2>
 <nav>
 <ul>
 <li><a href="">Home</a></li>
 <li><a href="">Classes</a></li>
 <li><a href="">Catering</a></li>
 <li><a href="">About</a></li>
 <li><a href="">Contact</a></li>
 </ul>
 </nav>
 </header>
 <section>
 <article>
 <figure>
 <img src="images/bok-choi.jpg" alt="Bok Choi" />
 <figcaption>Bok Choi</figcaption>
 </figure>
 <hgroup>
 <h3>Japanese Vegetarian</h3>
 <h4>Five week course in London</h4>
 </hgroup>
 <p>A five week introduction to traditional Japanese vegetarian meals, teaching you a selection of rice and noodle dishes.</p>
 </article> 
 <article>
 <figure>
 <img src="images/teriyaki.jpg" alt="Teriyaki sauce" />
 <figcaption>Teriyaki Sauce</figcaption>
 </figure>
 <hgroup>
 <h3>Sauces Masterclass</h3>
 <h4>One day workshop</h4>
 </hgroup>
 <p>An intensive one-day course looking at how to create the most delicious sauces for use in a range of Japanese cookery.</p>
 </article> 
 </section>
 <aside>
 <section>
 <h3>Popular Recipes</h3>
 <a href="">Yakitori (grilled chicken)</a>
 <a href="">Tsukune (minced chicken patties)</a>
 <a href="">Okonomiyaki (savory pancakes)</a>
 <a href="">Mizutaki (chicken stew)</a>
 </section>
 <section>
 <h3>Contact</h3>
 <p>Yoko's Kitchen<br>
 27 Redchurch Street<br>
 Shoreditch<br>
 London E2 7DP</p>
 </section>
 </aside>
 <footer>
 ? 2011 Yoko's Kitchen
 </footer>
 </div>
 <script>
  // 此處省略JavaScript代碼
 </script>
 </body>
</html>

如果你對上面的代碼并不感到陌生,那么你一定知道HTML頁面通常由三部分構成,分別是用來承載內(nèi)容的Tag(標簽)、負責渲染頁面的CSS(層疊樣式表)以及控制交互式行為的JavaScript。通常,我們可以在瀏覽器的右鍵菜單中通過“查看網(wǎng)頁源代碼”的方式獲取網(wǎng)頁的代碼并了解頁面的結(jié)構;當然,我們也可以通過瀏覽器提供的開發(fā)人員工具來了解更多的信息。

使用requests獲取頁面

  1. GET請求和POST請求。

  2. URL參數(shù)和請求頭。

  3. 復雜的POST請求(文件上傳)。

  4. 操作Cookie。

  5. 設置代理服務器

【說明】:關于requests的詳細用法可以參考它的官方文檔。

頁面解析

幾種解析方式的比較

Python中關于數(shù)據(jù)采集和解析是怎樣的

說明:BeautifulSoup可選的解析器包括:Python標準庫(html.parser)、lxml的HTML解析器、lxml的XML解析器和html5lib。

使用正則表達式解析頁面

如果你對正則表達式?jīng)]有任何的概念,那么推薦先閱讀《正則表達式30分鐘入門教程》,然后再閱讀我們之前講解在Python中如何使用正則表達式一文。

XPath解析和lxml

XPath是在XML文檔中查找信息的一種語法,它使用路徑表達式來選取XML文檔中的節(jié)點或者節(jié)點集。這里所說的XPath節(jié)點包括元素、屬性、文本、命名空間、處理指令、注釋、根節(jié)點等。

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
 <book>
 <title>Harry Potter</title>
 <price>29.99</price>
 </book>
 <book>
 <title>Learning XML</title>
 <price>39.95</price>
 </book>
</bookstore>

對于上面的XML文件,我們可以用如下所示的XPath語法獲取文檔中的節(jié)點。

Python中關于數(shù)據(jù)采集和解析是怎樣的

在使用XPath語法時,還可以使用XPath中的謂詞。

Python中關于數(shù)據(jù)采集和解析是怎樣的

XPath還支持通配符用法,如下所示。

Python中關于數(shù)據(jù)采集和解析是怎樣的

如果要選取多個節(jié)點,可以使用如下所示的方法。

Python中關于數(shù)據(jù)采集和解析是怎樣的

【說明】:上面的例子來自于菜鳥教程網(wǎng)站上XPath教程,有興趣的讀者可以自行閱讀原文。

當然,如果不理解或者不太熟悉XPath語法,可以在Chrome瀏覽器中按照如下所示的方法查看元素的XPath語法。

Python中關于數(shù)據(jù)采集和解析是怎樣的

BeautifulSoup的使用

BeautifulSoup是一個可以從HTML或XML文件中提取數(shù)據(jù)的Python庫。它能夠通過你喜歡的轉(zhuǎn)換器實現(xiàn)慣用的文檔導航、查找、修改文檔的方式。

1.遍歷文檔樹

  • 獲取標簽

  • 獲取標簽屬性

  • 獲取標簽內(nèi)容

  • 獲取子(孫)節(jié)點

  • 獲取父節(jié)點/祖先節(jié)點

  • 獲取兄弟節(jié)點

2.搜索樹節(jié)點

  • find / find_all

  • select_one / select

【說明】:更多內(nèi)容可以參考BeautifulSoup的官方文檔。

PyQuery的使用

pyquery相當于jQuery的Python實現(xiàn),可以用于解析HTML網(wǎng)頁。

實例 - 獲取知乎發(fā)現(xiàn)上的問題鏈接

from urllib.parse import urljoin
import re
import requests
from bs4 import BeautifulSoup
def main():
 headers = {'user-agent': 'Baiduspider'}
 proxies = {
 'http': 'http://122.114.31.177:808'
 }
 base_url = 'https://www.zhihu.com/'
 seed_url = urljoin(base_url, 'explore')
 resp = requests.get(seed_url,
 headers=headers,
 proxies=proxies)
 soup = BeautifulSoup(resp.text, 'lxml')
 href_regex = re.compile(r'^/question')
 link_set = set()
 for a_tag in soup.find_all('a', {'href': href_regex}):
 if 'href' in a_tag.attrs:
 href = a_tag.attrs['href']
 full_url = urljoin(base_url, href)
 link_set.add(full_url)
 print('Total %d question pages found.' % len(link_set))
if __name__ == '__main__':
 main()

上述內(nèi)容就是Python中關于數(shù)據(jù)采集和解析是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文名稱:Python中關于數(shù)據(jù)采集和解析是怎樣的
當前URL:http://vcdvsql.cn/article28/peigcp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序、云服務器標簽優(yōu)化、移動網(wǎng)站建設、網(wǎng)站收錄微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設