1. 程式人生 > >小白的scrapy入門之路(一)

小白的scrapy入門之路(一)

話不多說,讓我們進入正題吧!

  安裝
  首先,少不了的肯定是python以及scrapy的安裝了。可以在python的官網下載安裝,官網地址:www.python.org

  由於小編使用的是windows系統,所以使用pip安裝會Scrapy時出現以下的問題。

  出現這樣的錯誤時可以到https://www.lfd.uci.edu/~gohlke/pythonlibs/找到相關的包進行下載安裝。

  建立專案

 

> scrapy startproject Runnob   #">"表示命令列提示符

 

 建立好專案以後就是進入專案目錄,建立蜘蛛了:

> scrapy genspider Runnoob http://www.runoob.com/python/python-tutorial.html

 

  這就是我們的專案目錄了,上面的main.py和utils資料夾是小編自己加的,這是小編的其他專案,哈哈。

  編寫程式碼

  首先是我們的items.py的程式碼,也就是我們要爬取什麼資料。小編這個專案很簡單,就是抓取標題、網址和內容。事不宜遲,放程式碼吧。

  小編在這裡用了ItemLoader,將處理資料的方法放到了items.py裡面做,減少蜘蛛的程式碼。對於ItemLoader的使用,可以檢視scrapy的官方文件。小編英文還可以,所以看的是英文文件,畢竟就算看不懂咱還有翻譯工具嘛,邊看邊學。一邊提高英文水平,一邊提高自己寫程式碼的水平。


  其次就到我們的蜘蛛程式碼了:

  寫蜘蛛程式碼最重要的當然是分析頁面。我們可以通過瀏覽器的除錯功能來幫助我們分析頁面,開啟瀏覽器按F12就能夠開啟除錯工具檢視我們的網頁程式碼了。

 

 

 

  從上圖我們就可以看出,菜鳥教程python的頁面非常簡單,它所有的連結都放在了這個div id為leftcolumn裡面,所以我們通過scrapy提供的css選擇器或者xpath選擇器就可以從中提取出我們需要的連結。
response.css('#leftcolumn a::attr(href)')就是提取出所有a標籤的href地址,就是我們要爬取的下一頁網址。
  通過網頁分析,進一步地提取出我們需要的資料。parse函式用於提取下一頁的連結,然後生成request請求交給下載器下載頁面,回撥給parse_detail函式處理。parse_detail從下載器返回的response裡提取出要的資料,生成item交給管道(即pipelines)處理。
  pipelines讀取到蜘蛛傳過來的item對它做進一步的處理,儲存到資料庫或者用json檔案的方式儲存等等。
  這是我的pipelines程式碼:

 

  這是個非同步插入的方法,如果資料量多的話,同步插入會導致資料庫出現阻塞。所以我採用了非同步的方法,由於懶癌發作,不想寫處理異常的程式碼,所以請大家原諒。小編採用的是Mysql,因此要安裝mysqlclient的工具用來連線我們的資料庫,windows下要在剛剛小編提到的網址去下載安裝。
  寫到這裡也就差不多了,最後就是修改我們的setting.py檔案了,把mysql的host,port,db,username,passwd加進去,然後給點面子加個User-Agent。這樣我們的小專案也就差不多了。

MYSQL_HOST = 'localhost'
MYSQL_DBNAME = 'runnoob'
MYSQL_USER = '使用者'
MYSQL_PASSWORD = '密碼'

  記得還要在Mysql裡面建立對應的資料庫和資料表,不然等著異常出現吧,哈哈。像小編這樣的小白,看到Trackback就頭疼呀。
  這就是小編的小專案了,雖然簡單,可是別看不起,對於小白來說,沒有什麼比上手實踐更快速地掌握知識的。從小白的路上走來,小編體會到了一個道理,就是別眼高手低,上手來一遍比你看幾遍還管用。有不足之處,請各位大牛指出。

  生命苦短,我用python

 csdn地址:https://blog.csdn.net/weixin_43698874/article/details/84075911