亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中關于數據采集和解析是怎樣的

發布時間:2021-10-26 11:00:19 來源:億速云 閱讀:182 作者:柒染 欄目:編程語言

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

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

  1. 下載數據 - urllib / requests / aiohttp。

  2. 解析數據 - re / lxml / beautifulsoup4 / pyquery。

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

  4. 生成數字簽名 - hashlib。

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

  6. 調度器 - 多進程(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頁面通常由三部分構成,分別是用來承載內容的Tag(標簽)、負責渲染頁面的CSS(層疊樣式表)以及控制交互式行為的JavaScript。通常,我們可以在瀏覽器的右鍵菜單中通過“查看網頁源代碼”的方式獲取網頁的代碼并了解頁面的結構;當然,我們也可以通過瀏覽器提供的開發人員工具來了解更多的信息。

使用requests獲取頁面

  1. GET請求和POST請求。

  2. URL參數和請求頭。

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

  4. 操作Cookie。

  5. 設置代理服務器

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

頁面解析

幾種解析方式的比較

Python中關于數據采集和解析是怎樣的

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

使用正則表達式解析頁面

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

XPath解析和lxml

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

<?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語法獲取文檔中的節點。

Python中關于數據采集和解析是怎樣的

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

Python中關于數據采集和解析是怎樣的

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

Python中關于數據采集和解析是怎樣的

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

Python中關于數據采集和解析是怎樣的

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

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

Python中關于數據采集和解析是怎樣的

BeautifulSoup的使用

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

1.遍歷文檔樹

  • 獲取標簽

  • 獲取標簽屬性

  • 獲取標簽內容

  • 獲取子(孫)節點

  • 獲取父節點/祖先節點

  • 獲取兄弟節點

2.搜索樹節點

  • find / find_all

  • select_one / select

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

PyQuery的使用

pyquery相當于jQuery的Python實現,可以用于解析HTML網頁。

實例 - 獲取知乎發現上的問題鏈接

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()

上述內容就是Python中關于數據采集和解析是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉义县| 龙里县| 东光县| 牡丹江市| 抚宁县| 崇左市| 临江市| 叙永县| 光泽县| 嘉禾县| 高陵县| 铜山县| 孟村| 东源县| 石家庄市| 晋江市| 清原| 扎囊县| 中阳县| 六盘水市| 临清市| 阿巴嘎旗| 达州市| 绍兴市| 连山| 太谷县| 名山县| 元氏县| 延吉市| 宣武区| 东城区| 教育| 吕梁市| 克山县| 仁寿县| 永兴县| 浠水县| 瑞昌市| 铜山县| 奈曼旗| 平塘县|