Python網絡數據採集

飛到花上   採集花粉   通過處理 數據清洗 存儲編程可用的數據javascript

urlib  BeautifulSoup  lxml  Scrapy  PdfMiner  Requests  Selenium   NLTK   Pillow  unittset  PySocksphp

知名網站的API  MySQL數據庫  OpenRefine數據分析工具html

PhanthomJS無頭瀏覽器java

Tor代理服務器等內容python

-----------git

關於多進程 multiprocessinggithub

      併發  concurrencyweb

      集羣 cluster正則表達式

等高性能採集的很少數據庫

國內外關於網絡數據保護的法律都在不斷地制定與完善 

做者介紹了美國與網絡數據採集相關的法律與典型案例

呼籲網絡爬蟲嚴格控制網絡數據採集的速度  下降 被採集網站服務的負擔  法律問題

語言是思想的解釋器   數據是語言的載體

bug是產品聲明中的挑戰 好產品 是不斷面對bug而且打敗bug的結果

--------

天天6點起牀

magic魔術

網絡數據採集  web  Scraping 

巫術 wizardry

先寫一個簡單的網絡爬蟲並不難 就是先收集數據 再顯示到 命令行或者存儲到數據庫裏

github

 

---------

https://github.com/REMitchell/python-scraping

-------------

screen scraping

data mining

web harvesting

-------------

bots 機器人

--------

若是你上網的惟一方式是用瀏覽器 

那麼你失去了不少可能

twitter 或者維基百科的API  發現一個API同時提供了 不一樣的數據類型

------

市場預測 機器語言翻譯 醫療診斷領域 對新聞網站 文章 健康論壇的數據進行採集

-----

Jonathan Harris 

Sep  Kamvar

在2006年發起的咱們感受挺好

wefeelfine 

http://wefeelfine.org/

項目

從大量英文博客中抓取許多

i feel

i am feeling開頭的語句

描述這個世界天天 每分鐘的 感受

-------

Bill Lubanovic 寫的《Python語言及其應用》

Jessica  McKellar 的教學視頻

http://shop.oreilly.com/product/110000448.do

-----------

http://www.safaribooksonline.com

---------

域名切換   信息收集  以及 信息存儲功能的爬蟲

1990年的Nexus瀏覽器

瀏覽器自己就是一個程序  能夠分解成不少基本組件能夠重用 重寫

-----------------------------------

被分紅一些子模塊

urllib.request

urllib.parse

urllib.error

庫 裏面有模塊

----------

python的標準庫 

BeautifulSoup庫的名字 取自 劉易斯 卡羅爾 的《愛麗絲夢遊仙境》裏的同名詩歌

化平淡爲神奇

----

有病沒藥  天災

-------

BS4  

BeautifulSoup

-----------

sudo  apt-get install  python-bs4

mac

sudo  easy_install  pip

 

pip

pip  install beautifulsoup4

------------

prettify---修飾

-----

bsObj.html.body.h1

bsObj.body.h1

bsObj.html.h1

-----------------

萬一 爬着爬着 跌機了咋辦

-------------

若是服務器不存在的話  urlopen會返回一個None對象

Beautiful對象找不到的時候返回的也是None

標籤下面的標籤沒有的 話

就會

AttributeError錯誤

---

import   urllib.request
from urllib.error import HTTPError
from bs4 import BeautifulSoup
def getTitle(url):
try:
html=urllib.request.urlopen(html)
except HTTPError as e:
return None
try:
bsObj=BeautifulSoup(html.read())
title=bsObj.body.h1
except AttributeError as e:
return None
return title
title=getTitle("http://www.pythonscraping.com/pages/page1.html")
if title==None:
print("題目不能是空")
else:
print(title)
-----------
米開朗其羅
如何完成《大衛》
很簡單 只要用錘子 把石頭上不像大衛的地方敲掉就行了
=----------
頁面解析難題(Gordian Knot)的時候
當網站管理員對網站稍做修改以後 這行代碼就會失效 甚至可能會毀掉整個網絡爬蟲
-------------
尋找 打印此頁 的連接
看看網站有沒有HTML樣式更好的移動版
把本身的請求頭設置成處於移動設備的狀態 而後接受網站移動版


尋找隱藏在Javascript文件裏面的信息
我曾經把一個網站上 的街道地址 整理成格式整潔的數組時候
查看過內嵌谷歌的javascript文件


網站標題也能夠從網頁的URL連接裏獲取



  若是你找的信息只是存在一個網站上  別的地方沒有

 

三思然後行寫代碼

--------------

Lambda表達式 

本質上就是一個函數

能夠做爲其餘函數的 變量使用

一個函數不是定義成f(x,y)

而是定義成 f(g(x),y)

或者f(g(x),h(x))的形式

----

BeautifulSoup容許咱們把特定函數類型看成findAll函數的參數

惟一限制條件是

這些函數必須把一個標籤做爲參數且返回結果是布爾類型

BeautifulSoup用這個函數來評估它遇到的每一個標籤對象

最後評估結果爲真的標籤保留 將其餘標籤刪除

soup.findAll(lambda tag:len(tag.attrs)==2)

這行代碼會找出下面的標籤:

 

<div  class="body"  id="content"></div>

<span style="color:red" class="title"></span>

-----

lambda 表達式選擇標籤  將是regular  expression的完美替代方案

-------

除了使用BeautifulSoup  (Python裏最受歡迎的HTML解析庫之一)

lxml  (http://lxml.de/)  解析 HTML  XML文檔

很是底層的實現  大部分源碼用c寫的

學習曲線越陡峭  你能夠越快學習它

處理HTML文檔時很快

-----------

HTML parser Python自帶的解析庫

不用安裝 

https://docs.python.org/3/library/html.parser.html

----------

返回的是Python字典對象

能夠獲取和操做這些屬性

myImgTag.attrs["src]

----------------

本質是一種遞歸

使用網絡爬蟲你必須謹慎地考慮須要消耗多少網絡流量

---

還要盡力思考能不能讓採集目標服務器負載更低一些

---------

維基百科六度分割理論

-----

文 貝肯(kevin  Bacon)

六度分隔值遊戲

兩個遊戲中  都是把兩個不相關的 主題

維基百科裏是詞條之間的連接

凱文 貝肯是用出如今同一部電影裏的演員來 連接

用一個總數不超過六條的主題連接起來 包括原來的兩個主題

http://oracleofbacon.org/index.php

------------

from urllib.request import  urlopen
from bs4 import BeautifulSoup

html=urlopen("http://en.wikipedia.org/wiki/Kevin_Bacon")
bsObj=BeautifulSoup(html)
for link in bsObj.findAll("a"):
if 'href' in link.attrs:
print(link.attrs['href'])
----------



維基百科的每一個頁面充滿了 側邊欄 頁眉 頁腳 連接鏈接到 分類頁面 對話頁面 其餘不包含詞條的頁面的連接:爲了判斷維基百科的內鏈是否連接到 一個詞條他寫了一個很大的過濾函數超過100行代碼不幸的是在項目啓動的時候 沒有花時間去比較詞條連接和其餘連接的差別---URL連接不包含分號在id是bodyContent的div標籤裏URL連接都是以/wiki開頭----------http://regexpal.com/網站 上在線測試正則表達式-----------不一樣郵箱服務器的郵箱地址的具體規則不盡相同--------郵箱的正則表達式---------[A-Za-z0-9\._+]+@[A-Za-z]+\.(com|org|edu|net)----------咱們後面要創建的爬蟲也是順着連接從一個頁面跳轉到另外一個頁面描繪出一張網絡地圖此次 再也不忽略外鏈 跟着外鏈跳轉爬蟲是否是能夠記錄咱們瀏覽過的沒一個頁面上的信息相比以前咱們作的 單個域名採集互聯網採集要難的多不一樣網站的佈局迥然不一樣意味着咱們必需要尋找的信息以及查找方式上都極具靈活性-------------芝麻街http://www.sesamestreet.org------------我要收集哪些數據?這些數據能夠經過採集幾個已經肯定的 網站 完成嗎?個人爬蟲須要發現那些我可能不知道的網站嗎--個人爬蟲到了某個站 是當即順着出站連接跳到一個新站仍是在網站上待會深刻採集網站的內容有沒有我不想採集的一類網站對非英文網站的 內容感興趣嗎個人行爲引發了某個網站網管的懷疑我如何避免法律責任------寫網絡爬蟲的挑戰之一 是你常常要重複一些簡單人物 找出網頁上的全部連接 區份內鏈 外鏈 跳到新的頁面-------http://scrapy.org/dowmload
相關文章
相關標籤/搜索