如何使用Python爬虫抓取数据?
Python爬蟲應用十分廣泛,無論是各類搜索引擎,還是日常數據采集,都需要爬蟲的參與。其實爬蟲的基本原理很簡單,今天小編就教大家如何使用Python爬蟲抓取數據,感興趣的小伙伴趕緊看下去吧!
工具安裝
首先需要安裝Python的requests和BeautifulSoup庫。我們用Requests庫用抓取網頁的內容,使用BeautifulSoup庫來從網頁中提取數據。
安裝python
運行pip install requests
運行pip install BeautifulSoup
抓取網頁
完成必要工具安裝后,我們正式開始編寫我們的爬蟲。我們的第一個任務是要抓取所有豆瓣上的圖書信息。我們以https://book.douban.com/subject/26986954/為例,首先看看開如何抓取網頁的內容。
提取內容
抓取到網頁的內容后,我們要做的就是提取出我們想要的內容。在我們的第一個例子中,我們只需要提取書名。首先我們導入BeautifulSoup庫,使用BeautifulSoup我們可以非常簡單的提取網頁的特定內容。
連續抓取網頁
到目前為止,我們已經可以抓取單個網頁的內容了,現在讓我們看看如何抓取整個網站的內容。我們知道網頁之間是通過超鏈接互相連接在一起的,通過鏈接我們可以訪問整個網絡。所以我們可以從每個頁面提取出包含指向其它網頁的鏈接,然后重復的對新鏈接進行抓取。
準備
IDE:pyCharm
庫:requests、lxm
大概介紹一下,這倆庫主要為我們做什么服務的
requests:獲取網頁源代碼
lxml:得到網頁源代碼中的指定數據
言簡意賅有沒有 ^_^
搭建環境
這里的搭建環境,可不是搭建python的開發環境,這里的搭建環境是指,我們使用pycharm新建一個python項目,然后弄好requests和lxml?新建一個項目,光溜溜的啥也沒有,新建個src文件夾再在里面直接新建一個Test.py吧 。
依賴庫導入
在Test.py中輸入:
import requests
?
這個時候,requests會報紅線,這時候,我們將光標對準requests,按快捷鍵:alt + enter,pycharm會給出解決之道,這時候,選擇install package requests,pycharm就會自動為我們安裝了,我們只需要稍等片刻,這個庫就安裝好了。lxml的安裝方式同理.
將這兩個庫安裝完畢后,編譯器就不會報紅線了。
取網頁源代碼
requests可以很方便的讓我們得到網頁的源代碼。
獲取源碼:
# 獲取源碼html = requests.get("https://blog.csdn.net/it_xf?viewmode=contents")# 打印源碼print html.text代碼就是這么簡單,這個html.text便是這個URL的源碼
獲取指定數據
現在我們已經得到網頁源碼了,這時就需要用到lxml來來篩選出我們所需要的信息
首先我們需要分析一下源碼,我這里使用的是chrome瀏覽器,所以右鍵檢查。
然后在源代碼中,定位找到第一篇 。
首先點擊源碼頁右上角的箭頭,然后在網頁內容中選中文章標題,這個時候,源碼會定位到標題這里,
這時候選中源碼的標題元素,右鍵復制。
得到xpath,它相當于地址。比如網頁某長圖片在源碼中的位置。
表達式://*[@id="mainBox"]/main/div[2]/div[1]/h4/a
首先,//表示根節點,也就是說啊,這//后面的東西為根,則說明只有一個啊。我們需要的東西,在這里面。
然后/表示往下層尋找,根據圖片,也顯而易見,div -> main -> div[2] -> div[1] -> h4 -> a
追蹤到a這里,然后我們在后面加個/text,表示要把元素的內容提取出來,所以我們最終的表達式長這樣:
//*[@id="mainBox"]/main/div[2]/div[1]/h4/a/text()
這個表達式只針對這個網頁的這個元素,不難理解吧?
那么這個東西怎么用呢?
所有代碼
? import requestsfrom lxml import etreehtml = requests.get("https://blog.csdn.net/it_xf?viewmode=contents")# print html.textetree_html = etree.HTML(html.text)content = etree_html.xpath('//*[@id="mainBox"]/main/div[2]/div[1]/h4/a/text()')for each in content:print(each)?這時候,each里面的數據就是我們想要得到的數據了
打印結果:
如何擼一個ArrayList
打印結果卻是這個結果,我們把換行和空格去掉
import requestsfrom lxml import etreehtml = requests.get("https://blog.csdn.net/it_xf?viewmode=contents")# print html.textetree_html = etree.HTML(html.text)content = etree_html.xpath('//*[@id="mainBox"]/main/div[2]/div[1]/h4/a/text()')for each in content:replace = each.replace('\n', '').replace(' ', '')if replace == '\n' or replace == '':continueelse:print(replace)用到了requests獲取網頁列表,用lxml篩選數據,可以看出python用來在網頁上爬取數據確實方便不少,chrome也支持直接在源碼中得到表達式xpath,這兩個庫的內容肯定不止這一點點,還有很多功能等著大家去挖掘。
以上就是“如何使用Python爬蟲抓取數據”的詳細講解,大家都聽懂了嗎?
?Python經驗分享
學好 Python 不論是就業還是做副業賺錢都不錯,但要學會 Python 還是要有一個學習規劃。最后大家分享一份全套的 Python 學習資料,給那些想學習 Python 的小伙伴們一點幫助!
Python學習路線
這里把Python常用的技術點做了整理,有各個領域的知識點匯總,可以按照上面的知識點找對應的學習資源。
學習軟件
Python常用的開發軟件,會給大家節省很多時間。
學習視頻
編程學習一定要多多看視頻,書籍和視頻結合起來學習才能事半功倍。
100道練習題
實戰案例
光學理論是沒用的,學習編程切忌紙上談兵,一定要動手實操,將自己學到的知識運用到實際當中。
最后祝大家天天進步!!
上面這份完整版的Python全套學習資料已經上傳至CSDN官方,朋友如果需要可以直接微信掃描下方CSDN官方認證二維碼免費領取【保證100%免費】。
總結
以上是生活随笔為你收集整理的如何使用Python爬虫抓取数据?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 根据参数生成小程序二维码
- 下一篇: 简单搞定python进制转换