標籤:

學習編程的你,遇到了Bug該怎麼辦?

這裡我先回答標題的問題,答案就是:百度!

直接把錯誤提示複製在搜索欄,用百度搜索。如果沒有現成的錯誤提示,只有模糊的需求,那就整理一下需求,組織一下語言,然後用百度搜索自己的需求。

不要擔心在百度上搜不到解決方案,真的,除非你已經在某個領域達到了比較高的水平,否則一定可以在百度上找到想要的答案的。關於編程上的問題,解決辦法常在CSDN、博客園、segmentfault、Stackoverflow、知乎或簡書之中。善用百度,可以使我們的學習更加高效。(能用谷歌當然更好)

舉個栗子吧:

這段時間我一直在學習爬蟲,昨天開始接觸爬蟲最流行的框架:Scrapy。我首先要解決的問題就是scrapy的安裝。

於是我不假思索的打開shell,輸入:

pip install scrapy

前提:pip(軟體包管理器)在之前我已經裝好了的。

果不其然,它報錯了,哎呀,我昨天裝的,沒有保存錯誤信息,現在寫推文沒法展示報錯提示了。大概意思就是我缺少win32API,安裝失敗。

然後我就在百度上搜索win32API:

然後在其官網上找到了我想要的pywin32的擴展包:

注意:一定要下載符合自己電腦上python軟體的位數和版本號,一個都不能錯,否則會安裝失敗的。

把pywin32安裝好了之後,再來

pip install scrapy

大概一分鐘左右安裝完成,我安裝的是scrapy 1.4.0。

然後就可以用scrapy愉快的學習爬蟲了,於是我迫不及待用專供爬蟲初學者訓練爬蟲技術的網站(books.toscrape.com)來練練手:

這個網站專供爬蟲訓練,沒有什麼實際意義。

網站上有1000本書,每頁20本,一共50頁。我僅爬取這1000本書的書名和書價信息。

完整源碼如下:

import scrapyclass BoooksSpider(scrapy.Spider): """定義一個爬取書籍的類,繼承scrapy.Spider""" # 每個爬蟲的唯一標識 name = "books" # 定義爬蟲爬取的起始點,起始點可以是多個,這裡只有一個 start_urls = ["http://books.toscrape.com/"] def parse(self, response): """頁面解析函數""" # 每本書的信息在<article class="product_pod">中, # 我們使用css()方法找到所有這樣的article元素,並依次迭代 for book in response.css("article.product_pod"): # 書名信息在article>h3>a元素的title屬性里 name = book.xpath("./h3/a/@title").extract_first() # 書價信息在<p class="price_color">的text中 price = book.css("p.price_color::text").extract_first() yield { "name": name, "price": price, } # 提取鏈接 # 下一頁的url在ul.pager>li.next>a裡面 next_url = response.css("ul.pager li.next a::attr(href)").extract_first() # 如果找到下一頁的url,得到絕對路徑,構造新的response對象 if next_url: next_url = response.urljoin(next_url) yield scrapy.Request(next_url, callback=self.parse)

詳細思路都在注釋里。

上面爬蟲源碼不是我今天要說的重點,重點是我爬取完成之後存儲為books.csv文件,打來CSV文件:

發現竟然每行數據之間都有空行,這可不行。該怎麼辦? 還是百度,強大的度娘!

於是我在百度上搜索:用scrapy存儲為CSV文件存在空行怎麼辦?

已經有大神給出解決方案了:

我的exports.py文件所在的路徑為:E:PythonLibsite-packagesscrapy

然後打開這個exports.py文件,按照那位大神指定的位置添加一句:newline=』』,

然後關閉,再次運行上面那個爬蟲源碼,存儲為books1.csv文件,打開CSV文件:

哈哈,數據之間就沒有空行了,perfect!

我舉上面這個例子,想說明的是:遇到bug了不要慌張,善於利用百度,會讓我們學習編程事半功倍。

其實學習編程就是一個不斷踩坑再不斷填坑的過程,學習之路上出現的每一個bug都是促進我們進步的動力。善於總結,等到我們踩的坑足夠多的時候,也就具備了豐富的經驗了。

微信公眾號:小白客

每天學習一點點,每天進步一點點。

推薦閱讀:

不只是開源才有問題
如何看待能自動修復bug的CodePhage?
關於RecyclerView設置了適配器數據不顯示問題
少女前線為什麼會有這麼多BUG?這對少女前線以後的發展有影響嗎?
極光日報 第 171 期 | 2017 / 5 / 8

TAG:自學編程 | Bug |