注:一篇去年的舊文,發現沒在知乎發過,過來補個檔。有個小問題是項目中淘票票的網頁反爬提高且變更較多,目前暫不可用了。
時常有同窗會問我相似的問題:我已經學完了 Python 基礎,也照着例子寫過一點爬蟲代碼 / 瞭解過 django 的入門項目 / 看過數據分析的教程……而後就不知道要作什麼了。接下來應該 如何繼續提高編程能力呢 ?前端
個人答案很簡單:python
不要把「項目」想象得太複雜,以爲必定是那種收錢開發的才能稱做項目(若是有這種項目固然會更好)。對於剛剛跨入編程世界的你來講,任何一個小項目都是好的開始。你所須要的,就是 一雙發現問題的眼睛 。生活中工做中的一些小事情小麻煩,多想一步,是否是能夠寫一小段代碼來解決。django
一開始,或許你的解決方案很笨拙,很複雜,原本5分鐘就能搞定的事情,你寫代碼卻花了一個小時。但對你來講,此時的目的並不僅是解決問題,而是這個過程自己。 在折騰的過程當中,你的經驗纔會增加 。這是你單純看教程所沒法達到的,再好的教程也替代不了動手。(有時候會有人評論說,這功能直接用xxx就能夠了,幹嗎還要本身寫代碼。對此我不作評價,由於我知道他不是來學編程的。)編程
咱們編程教室也陸續提供了一些項目案例。你能夠參考咱們的示例代碼,或者更好的是,本身去思考一個解決方案並實現。咱們的案例很多都放在了網站 http:// lab.crossincode.com 上演示,歡迎你們去瀏覽。內容會持續更新,可留意咱們微信公衆號和知乎專欄裏的文章。後端
今天介紹的這個項目就源自生活中的一個場景: 買電影票 。api
當你打算週末出門看場電影的時候,就必然面臨三個終極問題:服務器
一般你只須要打開經常使用的購票App,選一部最近口碑不錯的片子,去熟悉的影院看看有哪些場次就能夠了。但有時你也會發現,一樣一部電影,不遠的兩家影院,價格就差不少,不一樣的購票App也會由於促銷活動之類有不一樣的優惠力度,一張票可能會相差幾十元。但若是每次都去幾個App把最近的排片和價格都瀏覽一遍,那也太麻煩了。因而就有了咱們這個小項目:微信
電影票比價網框架
在咱們這個網頁上,會展現出當前熱映的電影。進入每部電影,選擇 城市 、 區域 、 影院 和 日期 ,就能夠看到最近的 排片時間 和不一樣渠道的 價格 。目前,咱們是從 糯米 、 淘票票 和 時光網 三個渠道獲取價格來作演示。(注:項目中淘票票現已失效)函數
本項目是對爬蟲和Web網站的綜合運用,適合已經有掌握python基礎,而且對此有一些瞭解的同窗做爲練手項目。涉及到模塊主要是:
項目主要有三塊:
使用豆瓣 api 每日更新上映的影片列表。
項目的核心部分,用來處理影院信息和排名信息的抓取。
項目自己是一個網站,總體是在 django 的框架之中。
# 獲取淘票票某地區某電影院某影片價格# 1. 根據查詢條件獲取影院 id# 2. 根據影院 id 獲取該影院正在上映電影# 3. 獲取 查詢電影的排片時間表連接# 4. 拿到價格 def get_movie_tickets(self, *args): assert len(args) == 4, 'not enough parameters \n type in -h for help' movie_name = args[3] mt = TaoppDt() cinema_url = mt.search(*args[:3]) assert cinema_url, '未查詢到該電影院' pattern = re.compile(r'cinemaId=(\d+)') cinemaid = re.findall(pattern, cinema_url)[0] film_url = 'https://dianying.taobao.com/cinemaDetailSchedule.htm?cinemaId=' + str(cinemaid) content = self.rq.req_url(film_url) assert content, '請求失敗,請檢查 /utils/req.py 中 req_url 函數是否工做正常' soup = bs4.BeautifulSoup(content, 'lxml') soup_film = soup.find('a', text=re.compile(movie_name)) assert soup_film, '未查詢到該電影' film_param = soup_film['data-param'] return self._get_ticket_info(film_param)
完整的代碼 和 詳細代碼說明 已上傳 Github,獲取下載地址請在 公衆號(Crossin的編程教室) 裏回覆 電影票 。
════
其餘文章及回答:
學編程:如何自學Python | 新手引導 | 一圖學Python
歡迎搜索及關注: Crossin的編程教室