> For the complete documentation index, see [llms.txt](https://datasciencetw.gitbook.io/python/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://datasciencetw.gitbook.io/python/7-web-crawler.md).

# 7 Web Crawler

## 什麼是網路爬蟲?

{% hint style="info" %}
爬蟲是...一種用來自動瀏覽全球資訊網的網路機器人....@\_@!!?

爬蟲最困難的地方不在於程式撰寫，而在於對於網站的觀察。很多網站都有超過一種以上的爬蟲方法可以爬取，而這時就要透過觀察網頁所累積的經驗來判斷用什麼方法能夠達成目標。

學爬蟲最好的方法**就是多爬幾個網站**，**看多就變高手了。**&#x5217;出簡易的爬蟲流程給大家參考：

1. 觀察網站是靜態還是動態
2. 觀察網站的 css與 xpath結構 (靜態) 或 network活動(動態) 並進行爬取
3. 利用 pandas處理資料
4. 存入 csv或 database
   {% endhint %}

* [什麼是爬蟲 ?](http://wiki.mbalib.com/zh-tw/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB)
* [關於request & response](http://www.largitdata.com/course/5/)
* 關於網頁結構與爬蟲
  * [HTML Tutorial](https://www.w3schools.com/html/)
  * [XML Tutorial](https://www.w3schools.com/xml/default.asp)
  * [XML Path Tutorial](https://www.w3schools.com/xml/xpath_intro.asp)

## &#x20;常用爬蟲工具

1. [SelectorGadget](https://chrome.google.com/webstore/detail/selectorgadget/mhjhnkcfbdhnjickkkdbjoemdmbfginb?hl=zh-TW) or [InfoLite](https://chrome.google.com/webstore/detail/infolite/ipjbadabbpedegielkhgpiekdlmfpgal) -- 以CSS結構進行網頁觀察
2. [Xpath Helper](https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl?hl=zh-TW) -- 以Xpath結構進行網頁觀察
3. [JsonViewer](https://chrome.google.com/webstore/detail/json-viewer/gbmdgpbipfallnflgajpaliibnhdgobh?hl=zh-TW) -- 讓json格式資料美美搭=\_+
4. [Postman](https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=zh-TW) 搭配 [httpbin](http://httpbin.org/) -- 快速了解關於HTTP Request、Response
5. [Quick javascript switcher](https://chrome.google.com/webstore/detail/quick-javascript-switcher/geddoclleiomckbhadiaipdggiiccfje) -- 開關網頁的 javascript功能，幫助辨識哪些部分有用到 javascript

## Python爬蟲常用packages

* [PyQuery](https://pypi.python.org/pypi/pyquery)
* [BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/)
* [requests](http://docs.python-requests.org/en/master/)

## 使用Python進行簡易**爬蟲**

* 結構簡單且無 js動態生成網頁 (靜態爬蟲)

  a. [PTT爬蟲](https://github.com/NTU-CSX-Project/106-2PythonSampleCode/blob/master/week_2/course_2_crawler_examples/ptt_parser.ipynb)

  b. [淘寶爬蟲](http://www.largitdata.com/course/9/)

  c. [愛評網爬蟲](http://enginebai.logdown.com/posts/834887/webcrawler)

## 使用Open API進行爬蟲

* python-twitter package.
  * [範例程式碼](https://github.com/NTU-CSX-Project/106-2PythonSampleCode/blob/master/week_4/twitterAPI.ipynb)
* [Facebook API.](https://developers.facebook.com/docs/graph-api?locale=zh_TW)
  * [探索Facebook 隱藏的秘密: 使用Graph API](https://youtu.be/VXVE9ql85n8)
  * [探索Facebook 隱藏的秘密: 使用Python 存取 Facebook 資訊](https://youtu.be/lxUIgZj9wfg)
  * [【爬蟲】用Facebook API搜集粉絲專頁資訊](https://medium.com/pyladies-taiwan/%E7%88%AC%E8%9F%B2-%E7%94%A8facebook-api%E6%90%9C%E9%9B%86%E7%B2%89%E7%B5%B2%E5%B0%88%E9%A0%81%E8%B3%87%E8%A8%8A-8a3838f7e407)
* Data Taipei API.
  * [臺北市政府資料開放平台](http://data.taipei/)
    * [ubike station information api](http://data.ntpc.gov.tw/od/data/api/54DDDC93-589C-4858-9C95-18B2046CC1FC;jsessionid=3D59D691A89C50D9BD6763C844C777CD?$format=json)

## Python網站爬蟲範例程式碼

> 程式碼連結" 搬移中，將於2018/7更新至此。
