Python網路資料擷取

來源:互聯網
上載者:User

標籤:Regex   sql   串連   測試   結果   content   safari   比較   抓取   

飛到花上   採集花粉   經過處理 資料清洗 儲存編程可用的資料

urlib  BeautifulSoup  lxml  Scrapy  PdfMiner  Requests  Selenium   NLTK   Pillow  unittset  PySocks

知名網站的API  MySQL資料庫  OpenRefine資料分析工具

PhanthomJS無頭瀏覽器

TorProxy 伺服器等內容

-----------

關於多進程 multiprocessing

      並發  concurrency

      叢集 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檔案裡面的資訊
我曾經把一個網站上 的街道地址 整理成格式整潔的數組時候
查看過內嵌Google的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/網站 上線上測試Regex
-----------
不同郵箱伺服器的郵箱地址的具體規則不盡相同
--------
郵箱的Regex
---------
[A-Za-z0-9\._+][email protected][A-Za-z]+\.(com|org|edu|net)
----------
我們後面要建立的爬蟲
也是順著連結從一個頁面跳轉到另一個頁面
描繪出一張網路地圖
這次 不再忽略外鏈 跟著外鏈跳轉
爬蟲是不是可以記錄我們瀏覽過的沒一個頁面上的資訊
相比之前我們做的 單個網域名稱採集
互連網採集要難的多
不同網站的布局迥然不同
意味著我們必須要尋找的資訊以及尋找方式上都極具靈活性
-------------
芝麻街
http://www.sesamestreet.org
------------
我要收集哪些資料?這些資料可以通過採集幾個已經確定的 網站 完成嗎?
我的爬蟲需要發現那些我可能不知道的網站嗎
--
我的爬蟲到了某個站 是立即順著出站連結跳到一個新站還是在網站上待會
深入採集網站的內容
有沒有我不想採集的一類網站
對非英文網站的 內容感興趣嗎

我的行為引起了某個網站網管的懷疑
我如何避免法律責任

------
寫網路爬蟲的挑戰之一 是你經常要重複一些簡單人物
找出網頁上的所有連結 區分內鏈 外鏈 跳到新的頁面
-------
http://scrapy.org/dowmload


Python網路資料擷取

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.