1. 程式人生 > >記一次Python爬蟲開發經歷

記一次Python爬蟲開發經歷

light 情況 獲取 數據類型 true charm req 是我 遇到

為啥要做Python爬蟲,是因為我去找電影的某個網站有點坑,它支持tag標簽查詢自己喜歡的電影,但是不支持雙標簽或者三標簽查詢。由於一個電影對應多種類型(tag),這就意味著,我需要進入這個電影介紹界面,看看他的tag是不是我需要的。太麻煩了。於是我想著做一個python爬蟲。

首先需求分析。

流程如下:在網站的主界面獲得每部電影的URL——》進入每部電影的介紹界面——》判斷它的tag是否符合要求,如果符合返回這部電影的名字——》把滿足條件的URL和電影名字保存為文件——》下一頁

很簡單的一個需求,基本兩個FOR循環解決問題。

之前是做java的,Java也能做,但是一直聽說python爬蟲python爬蟲,於是想著既然python簡單,那麽就用python來做吧。的確簡單。

首先安裝好python,這不用多說。

然後上知乎搜索一下 “python 爬蟲”,大致看了幾篇文章,推薦用 Requests 和Scrapy的比較多。Scrapy是個爬蟲框架,我這麽簡單的需求要框架幹嘛。就決定用requests了。

pip install requests

首先裝好 requests,按照知乎上的教程,在python自帶的編輯器上打出下面的代碼:

import requests
response = requests.get(‘https://www.baidu.com/‘) context = response.text print(context)

看到控制臺上輸出一串字符,頗有成就感。畢竟自己的第一個python程序啊。

但問題出現了,我要爬取的網站需要FQ啊。在網上搜了一下,requests支持代理,於是又加了下面的代碼:

proxies = {
	‘https‘: ‘https://127.0.0.1:1080‘,
	‘http‘: ‘http://127.0.0.1:1080‘
}
headers = {
	‘user-agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36‘
}

可以用, 但代碼行數已經有點多了,我需要一個python編輯器,雖然我裝有宇宙第一IDE,但我當時並不知道VS支持python的,畢竟我只用它來寫.Net程序。於是上網搜一下,都推薦pycharm,好,就是你了。

安裝調試好pycharm,又按照網上的教程亦步亦趨的繼續。

又出現了個問題,谷歌一下說是縮進的問題(吐槽一下,我一整天,遇到的大部分問題都是縮進問題),我檢查了一下,縮進沒問題啊。把代碼復制到NotePad++裏檢查一下,原來Pycharm會自動把tab制表符換為四個空格,由於我是用NotePad++和Pycharm混合編輯這個py文件的,導致裏面的代碼,縮進部分有的是[tab],有的是四個空格,操蛋,原來Python不支持tab和空格混用。於是改為用NotePad++編輯,使用Pycharm運行。

很好,這個requests我至少會用他的get方法了,其他的我暫時還用不到,現在需要的是使用正則找到這些電影的URL。順便在吃午飯的時候大致看了一下廖雪峰的Python教程,看了一下基本語法。

網址:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

我對正則也不是很了解,不過我現在只需要寫一個能用的程序,於是使用最簡單暴力的方式:取那個URL所在的那一整塊,到時候用字符串截取的方式把多余的部分截取掉就行了。這樣對正則表達式的要求就簡單多了。

遍歷每個URL,再使用requests獲取到網頁內容,使用正則獲取到網頁內容中的tag部分,查找這些tag有沒有自己需要的。

這時我又遇見一個縮進問題,檢查了半天,報錯那一行格式沒問題啊。又再檢查整體代碼,嘛,我一個try忘記寫excep了,那麽你報try的錯誤啊,報縮進錯誤幹嘛。

還有一次也是同樣的縮進的問題,檢查了半天,報錯的那一行的確格式沒問題啊,突然看到,我一個else: 沒有寫要處理的內容就直接跳出一個 if 代碼塊了,是不是這個導致的,把這個else: 刪掉。問題解決。

真坑。

總體而言,python作為一門弱類型語言,還是挺容易上手的,我之前都沒有接觸過python,一天之內通過各種谷歌的方式竟然寫了一個能用的腳本了。要是放在java或者C#,一天的時間可能還在忙活著裝java環境,配置IDE,了解各個數據類型那些。

但python的縮進的確是個大坑。

python的運行速度真心慢。當然比我人工快多了,以後可以考慮多線程的情況。

PS: 你問我找這麽多電影幹嘛?

這種需要快進看的電影,當然多多益善了。

記一次Python爬蟲開發經歷