Python極簡教程_Python爬取網站數據_非常詳細的入門教程

簡述:我們都知道,現在市面上Python這門編程語言很火,Python 是一個高層次的結合瞭解釋性、編譯性、互動性和麪向對象的腳本語言,也就說說類似於PHP這樣的弱類型語言,但是功能很強大,常用的功能體現在爬取網頁數據,實現思路就是通過網頁鏈接URL得到網頁的源代碼,根據源代碼以及相關正則表達式規則篩選出需要的信息,打到爬取有效信息的目標。

開發環境準備:開發環境用的idea,依賴庫分別是requestslxml ,python配置環境變量以及安裝python插件,網上教程很多,此處不再贅述,通過使用 pip install lxml 與 pip install requests 命令來安裝這兩個模塊即可,下面通過代碼講解實現過程。

我們先在idea裏新建一個python工程,右鍵新建python-file,新建一個python文件,文件名此處是test-py.py

test-py.py文件導入依賴庫

# coding=utf-8
import requests
from lxml import html

依賴庫說明:requests用於通過http請求獲取網頁數據(網頁源碼),類似於java的HttpClient,lxml用於網頁元素篩選。

(注意:網上關於lxml的大多數都是這樣導入的,import lxml,由於版本問題報錯,對於報錯問題網上各種磚家提供的方案親測基本都不能用,此處用from lxml import html這個方式導入完美解決,至於爲什麼,筆者沒有研究過)

接下來開始爬取網站數據,筆者通過爬取個人博客(http://www.chenyunkeji.com)數據爲例在此講解。

分析數據:用谷歌瀏覽器打開網站http://www.chenyunkeji.com,按F12,打開開發者調試模式,在源代碼中,定位找到第一篇博客的標題部分,可以看到是一個a標籤,我們要爬取的是當前頁面每篇博客的標題文本內容。

 這時候選中源碼的標題元素,右鍵Copy--->Copy XPath:複製粘貼如下:/html/body/div[1]/div/div[1]/article/header/h2/a

根據這個內容我們很好理解,其實就是a標籤的位置,html->body->div[1]->div->div[1]->article->header->h2->a ,到此,大家應該都看得懂了,我們在後面再加個/text(),表示要把a元素的文本內容提取出來,我們最終要爬取數據表達式是這樣:/html/body/div[1]/div/div[1]/article/header/h2/a/text(),然後現在只是當前頁面其中1篇博客的標題,我們要獲取本頁面列表中所有的博客標題,那麼上面的表達式稍微再改造成這樣:/html/body/div[1]/div/div[1]/article/header/h2/a/text(),同時我們想把所有的空格符以及換行符都去掉,那麼replace一下就可以了,最終的代碼如下:

# coding=utf-8
import requests
from lxml import html
# 獲取源碼
page = requests.get("http://www.chenyunkeji.com/")
# 打印源碼
tree = html.fromstring(page.text)
# content = tree.xpath('//*[@id="mainBox"]/main/div[2]/div/h4/a/text()')
content = tree.xpath('//html/body/div[1]/div/div[1]/article/header/h2/a/text()')
for each in content:
    replace = each.replace('\n', '').replace(' ', '')
    if replace == '\n' or replace == '':
        continue
    else:
        print(replace)

運行該文件,控制檯打印如下:

非常完美,我們爬取到了網站 http://www.chenyunkeji.com/ 首頁所有的文章列表的標題內容,是不是很神奇,短短10行代碼。

本篇案例就分享到這裏,歡迎交流,如有問題,掃碼關注公衆號,聯繫筆者。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章