簡單的爬蟲入門

開發輕量級的爬蟲,不需要登錄的靜態網頁的爬取:

1,爬蟲的簡介:

啊,這個地方 爬蟲的定義啥的就不多講了,反正它的的功能啥的是很強大的,主要就是對網絡上的數據的爬取,然後對於爬取的數據可用於多方用途;用一句話就是:"互聯網數據,爲我所用  --慕課網某老師"

2,簡單的爬蟲架構:


恩,就是圖片中的各個部分:

3,url管理器的實現方法:

*實現方式:

1,內存:

                   python內存;

等待爬取的URL集合:set()

已經爬取的URL集合:set()

 

 

2,關係數據庫

                    MySQL

urls(url, is _crawled)

 

 

3,緩存數據庫

                    redis

等待爬取的URL集合:set

已經爬取的URL集合:set


4,網頁下載器:

*urllib2下載網頁方法1:最簡潔的方法

 

import urllib2

 

# 直接請求

response= urllib2.urlopen('http://www.baidu.com')

 

# 獲取狀態碼,如果是200表示獲取成功

Printresponse.getcode()

 

# 讀取內容

cout = response.read()

 

 

 

 

*urllib2下載網頁方法2:添加data http header

 

import urllib2

 

#創建Request對象

request = urllib2.Request(ur1)

 

#添加數據

request.add_data('a','1')

 

#添加httpheader

request.add.header('user-Agent','Mozilla/5.0')

 

 

 

*urllib2下載網頁方法3 :添加特殊情景的處理器

 

#增強cookie的處理

import urllib2, cookielib

 

#創建cookie容器

cj =cookielib.CookieJar()

 

#創建一個opener

opener =urllinb2.build_opener(urllib2.HTTPCookieProcessor(cj))

 

#使用帶有cookieurllib2訪問網頁

response = urllib2.urlopen("http://www.baidu.com/")




5,網頁解析器;

Python4種網頁解析器

201721

22:50

*正則表達式:

1:將網頁文檔作爲一個字符串,然後通過模糊匹配的方式來提取出有價值的數據。

2:優點;直觀。

 

3:缺點;如果文檔比較複雜的話,這種方法非常的麻煩。

 

*python自帶的html,parser模塊來解析網頁:

 

*第三方插件BeautifulSoup解析網頁:

#可以使用html,parser模塊和Ixml解析器來解析網頁

#BeautifulSoup語法:

&   創建BeautifulSoup的對象,--->搜索find_allfind--->訪問節點名稱<a>,屬性(href='123.html',class='artice_link'),文字(節點內容:Python)

&    代碼:

frombs4 import BeautifulSoup

import re

 

#根據HTml網頁字符串創建BeautifulSoup對象

soup = BeautifulSoup(

                                    html_doc,                     # HTML文檔字符串

                                    'html.parser'                 # HTML解析器

                                    from_encoding = 'utf8'# HTML文檔的編碼

                                    )

 

#搜索節點(find_all,find  方法:find_all(name, attrs, string)

#查找所有標籤爲a的節點

soup.find_all('a')

#查找所有標籤爲a,鏈接符合/view/123.html形式的節點

soup.find_all('a', href = '/view/123.html')

soup.find_all('a', href = re,compile(r'/view/\d+\.html') )

 

#查找所有標籤爲div, classabc 文字爲Python的節點

soup.find_all('div', class_='abc',  string = 'python' )

 

#訪問節點信息   得到節點:<a hef ='1.html'>python</a>

#獲取查找到的節點的標籤的名稱

node.name

#獲取查找到的節點的href屬性

node['href']

#獲取查找到的a節點的鏈接文字

node.get_text()

 

 

*第三方插件Ixml解析html網頁或者xml網頁

#3種方法是一種結構化的解析,第一種是字符串的模糊匹配


利用beautifulSoup模塊解析網頁內容的3種方法


6,實例爬蟲--分析目標

源碼在這裏哦

詞條頁面URL/view/125370.htm

  • 數據結構

標題:

        * <ddclass ="lemmaWagt-lemmaTitle-title"><h1>***<h1></dd>

簡介:

        *<divclass = "lemma-summary">***<div>

  • 頁面編碼:utf-8
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章