- 首頁
- 新聞
- 影視
摘要:爬取糗百內容代碼地址微信公眾號智能制造社區,歡迎關注。爬蟲程序一般是通過模擬瀏覽器對相應發出請求,獲取數據,并通過正則等手段匹配出頁面中我們所需的數據。庫基本介紹是學習爬蟲的一大利器。
爬取糗百內容
GitHub 代碼地址https://github.com/injetlee/Python/blob/master/qiubai_crawer.py
微信公眾號:【智能制造社區】,歡迎關注。
本文目標掌握爬蟲的基本概念
Requests 及 Beautiful Soup 兩個 Python 庫的基本使用
通過以上知識完成糗百段子抓取
爬蟲基本概念爬蟲也稱網頁蜘蛛,主要用于抓取網頁上的特定信息。這在我們需要獲取一些信息時非常有用,比如我們可以批量到美圖網站下載圖片,批量下載段子。省去手工操作的大量時間。爬蟲程序一般是通過模擬瀏覽器對相應URL發出請求,獲取數據,并通過正則等手段匹配出頁面中我們所需的數據。
在學習爬蟲之前,最好到 w3school 去了解一下 HTML 標簽的概念以及基本的 CSS 的概念。這會讓我們更容易的理解如何獲取頁面中某個內容。
Requests 庫基本介紹Requests 是學習爬蟲的一大利器。是一個優雅簡單的 HTTP庫。官網介紹如下:
Requests: HTTP for Humans
專門為人類使用的 HTTP 庫。使用起來非常簡單明了。
我們平時瀏覽網頁的步驟是輸入網址,打開。在 Requests 中是如下這樣的,我們可以在 Python 交互式解釋器中輸入以下代碼:
import requests r = requests.get("https://www.qiushibaike.com/text/") # 打開網址,一般我們會設置 請求頭,來更逼真的模擬瀏覽器,下文有介紹 r.text
我門看到下面一堆的代碼,其實就是網頁的源代碼(也可以在瀏覽器上右鍵查看頁面源代碼)。通過這幾行代碼我們就拿到了頁面的所有信息,剩下的就是從頁面中找到我們所需要的信息。
Beautiful Soup 庫介紹拿到網頁信息后,我們要解析頁面,通常來說我們有以下幾種方式來解析頁面,獲取我們所需的信息。
正則表達式
適用于簡單數據的匹配,如果匹配內容較復雜,正則表達式寫起來會很繞,同時頁面內容稍微變化,正則就會失效
Lxml
Lxml 是專門用來解析 XML 格式文件的庫,該模塊用 C 語言編寫,解析速度很快,和正則表達式速度差不多,但是提供了 XPath 和 CSS 選擇器等定位元素的方法
Beautiful Soup
這是一個 Python 實現的解析庫,相比較于前兩種來說,語法會更簡單明了一點,文檔也比較詳細。唯一的一點就是運行速度比前兩種方式慢幾倍,當數據量非常大時相差會更多。
本文作為入門教程,就從 Beautiful Soup 入手,來學習一下匹配頁面所需元素的方法。
假如有以下 HTML 內容 example.html
Page Title
我們通過 Beautiful Soup 來解析這個 html. 首先我們pip install beautifulsoup4安裝這個庫,并看一下簡單使用。
>>>from bs4 import BeautifulSoup >>>soup = BeautifulSoup("example.html", "html.parser") #加載我們的html文件 >>>soup.find("div") # 找到 div 標簽 "" >>>soup.find_all("li") # 找到所有 li 標簽 "[
詳細的操作可以去看一下文檔,文檔非常詳細,例子也很多,簡單明了。
糗百爬蟲代碼我們先爬取純文本的內容 https://www.qiushibaike.com/t... 爬取這個鏈接下的內容。我們把頁面結構截圖如下,我們要獲取的信息,我用紅色的方框進行了標注。
圖一:
圖二:
import requests from bs4 import BeautifulSoup def download_page(url): headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0"} r = requests.get(url, headers=headers) # 增加headers, 模擬瀏覽器 return r.text def get_content(html, page): output = """第{}頁 作者:{} 性別:{} 年齡:{} 點贊:{} 評論:{} {} ------------ """ # 最終輸出格式 soup = BeautifulSoup(html, "html.parser") con = soup.find(id="content-left") # 如圖一紅色方框 con_list = con.find_all("div", class_="article") # 找到文章列表 for i in con_list: author = i.find("h2").string # 獲取作者名字 content = i.find("div", class_="content").find("span").get_text() # 獲取內容 stats = i.find("div", class_="stats") vote = stats.find("span", class_="stats-vote").find("i", class_="number").string comment = stats.find("span", class_="stats-comments").find("i", class_="number").string author_info = i.find("div", class_="articleGender") # 獲取作者 年齡,性別 if author_info is not None: # 非匿名用戶 class_list = author_info["class"] if "womenIcon" in class_list: gender = "女" elif "manIcon" in class_list: gender = "男" else: gender = "" age = author_info.string # 獲取年齡 else: # 匿名用戶 gender = "" age = "" save_txt(output.format(page, author, gender, age, vote, comment, content)) def save_txt(*args): for i in args: with open("qiubai.txt", "a", encoding="utf-8") as f: f.write(i) def main(): # 我們點擊下面鏈接,在頁面下方可以看到共有13頁,可以構造如下 url, # 當然我們最好是用 Beautiful Soup找到頁面底部有多少頁。 for i in range(1, 14): url = "https://qiushibaike.com/text/page/{}".format(i) html = download_page(url) get_content(html, i) if __name__ == "__main__": main()
運行代碼后,我們會得到 "qiubai.txt"文件,打開后如下所示
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42083.html
摘要:在這之前,還是有必要對一些概念超輕量級反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標配系統。 爬蟲修煉之道——從網頁中提取結構化數據并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個爬取多頁面的網絡爬蟲主要講解了如何使用python編寫一個可以下載多頁面的爬蟲,如何將相對URL轉為絕對URL,如何限速,...
摘要:歡迎關注公號智能制造社區學習更多原創智能制造及編程知識。無無無無無無無獲取所有數據了解了如何解析數據,剩下的就是連續請求所有頁面了,我們構造一個函數來請求所有頁的數據。 前兩篇我們分別爬取了糗事百科和妹子圖網站,學習了 Requests, Beautiful Soup 的基本使用。不過前兩篇都是從靜態 HTML 頁面中來篩選出我們需要的信息。這一篇我們來學習下如何來獲取 Ajax 請求...
摘要:責編現代化的方式開發一個圖片上傳工具前端掘金對于圖片上傳,大家一定不陌生。之深入事件機制前端掘金事件綁定的方式原生的事件綁定方式有幾種想必有很多朋友說種目前,在本人目前的研究中,只有兩種半兩種半還有半種的且聽我道來。 Ajax 與數據傳輸 - 前端 - 掘金背景 在沒有ajax之前,前端與后臺傳數據都是靠表單傳輸,使用表單的方法傳輸數據有一個比較大的問題就是每次提交數據都會刷新頁面,用...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,。本文來源知乎作者路人甲鏈接楚江數據提供網站數據采集和爬蟲軟件定制開發服務,服務范圍涵蓋社交網絡電子商務分類信息學術研究等。 楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...
閱讀 4361·2021-11-22 09:34
閱讀 2690·2021-11-12 10:36
閱讀 742·2021-08-18 10:23
閱讀 2636·2019-08-30 15:55
閱讀 3111·2019-08-30 15:53
閱讀 2081·2019-08-30 15:44
閱讀 1361·2019-08-29 15:37
閱讀 1401·2019-08-29 13:04