日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python开发爬虫之理论篇

發布時間:2025/5/22 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python开发爬虫之理论篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

爬蟲簡介


?爬蟲:一段自動抓取互聯網信息的程序。

什么意思呢?

互聯網是由各種各樣的網頁組成。每一個網頁對應一個URL,而URL的頁面上又有很多指向其他頁面的URL。這種URL之間相互的指向關系就形成了一個網絡,這就是互聯網。

正常情況下就是我們采用人工點擊的方式,去獲取互聯網上指定的信息,這種方式的特點是覆蓋面小。

那有沒有可能有一種方式,是當我們設定了一個互聯網上感興趣的目標,然后自動地從互聯網上去獲取我們所需要的數據呢?

有,這就是爬蟲。它可以從一個URL出發訪問該URL所關聯的所有URL,并且從每個頁面上提取出我們所需要的價值數據。

也就是說,爬蟲就是自動訪問互聯網,并且提取數據的程序。

?

爬蟲技術的價值


?互聯網數據,為我所用。

?

Python簡單爬蟲架構


1)首先,我們需要一個爬蟲調度端。爬蟲調度端的作用:啟動爬蟲,停止爬蟲,監視爬蟲運行情況。

2)在爬蟲程序中有三個模塊:URL管理器、網頁下載器、網頁解析器。

3)URL管理器:對將要爬取的和已經爬取過的URL進行管理;可取出待爬取的URL,將其傳送給“網頁下載器”。

4)網頁下載器:將URL指定的網頁下載,存儲成一個字符串,在傳送給“網頁解析器”。

5)網頁解析器:解析網頁可解析出

    ①有價值的數據

    ②另一方面,每個網頁都包含有指向其他網頁的URL,解析出來后可補充進“URL管理器”

此時,這三個模塊就形成了一個循環,只要有感興趣的URL,這三個模塊就會一直循環下去。

?

?Python簡單爬蟲架構的動態運行流程(以時序圖的方式展示)


?

?

?Python爬蟲URL管理


?URL管理器:管理待抓取URL集合和已抓取URL集合。

目的:防止重復抓取、防止循環抓取。

?

Python爬蟲URL管理器的實現方式


?Python爬蟲URL管理器的實現方式具體有三種:

1)使用內存,在Python中主要使用set集合(方便去除重復的元素)

2)使用關系數據庫,使用兩個字段:url和is_crawled(用來標記是否被爬取)

3)使用緩存數據庫,同樣使用set集合

其中,大型公司一般選擇高性能的緩存數據庫。個人,小公司一般使用內存。若是想永久存儲,常使用關系數據庫。

?

Python爬蟲網頁下載器簡介


網頁下載器:一個工具,通過URL將互聯網上對應的的網頁以HTML的形式下載到本地存儲成本地文件或內存字符串,后進行后續處理;

Python有哪幾種網頁下載器:urllib2(Python官方模塊,基礎模塊)、requests(第三方模塊,功能強大)。

?

Python爬蟲urlib2下載器網頁的三種方法


?1)urllib2下載網頁方法1:最簡潔方法

將url直接傳給urllib2的urlopen()方法。

對應代碼:

?

2)urllib2下載網頁方法2:除url外,添加data、http header。

進行增強處理。

其中,data向服務器提交需要用戶輸入的數據。

http header用來向服務器提交http的頭信息。

對應代碼:

代碼中request.add_data('a','1')  #添加的數據類型為鍵值對,即a=1。

request.add_header()  #可以對url請求進行偽裝

?

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

更大更強的功能處理能力。

對應代碼(舉例:增強cookie的處理)

?

Python爬蟲urlib2實例代碼演示


import urllib2, cookielib
url
="http://www.baidu.com"
print '第一種方法' respones1 = urllib2.urlopen(url) print respones1.getcode() print len(respones1.read())
print "第二種方法" request = urllib2.Request(url) request.add_header("user-agent","Mozillla/5.0") respones2 = urllib2.urlopen(request) print respones2.getcode() print len(respones2.read())print '第三種方法' cj =cookielib.CookieJar() opener = urllib2.bulid_opener(urllib2.HTTPCookieProcessor(cj)) urllib2.install_opener(opener) print respones3.getcode() print cj print respones3.read()

?

Python爬蟲網頁解析器簡介


?

網頁解析器:從網頁中提取有價值數據的工具。

功能:

1)提取出新的待爬取URL列表;

2)解析出有價值的數據:

網頁解析器會以下載好的html網頁字符串作為輸入,提取出有價值的數據以及新的待爬取的URL列表。

Python有哪些網頁解析器呢?

1)正則表達式。最直觀的一種。將網頁文檔down成一個字符串,采用模糊匹配的方式進行提取有價值的數據。雖然直觀,但是當網頁文檔十分復雜的時候,這種方式將十分復雜。

2)使用Python自帶的html.parser模塊進行解析。

3)使用Beautiful Soup這個第三方插件來解析網頁。功能強大的Beautiful Soup可以用html.parser或者lxml作為它的解析器。

4)使用lxml這個第三方插件來解析html網頁或者xml文檔。

結構化解析——DOM(DOcument Object Model)樹

?

BeautifulSoup第三方模塊


BeautifulSoup官網:https://www.crummy.com/software/BeautifulSoup/

安裝BeautifulSoup:

如果你安裝了pip,那么就簡單了,無需從官網下載,打開命令提示符頁面。

進入到Python安裝目錄下的Scripts文件夾路徑下,輸入“pip install beautifulsoup4”,即可進行自動安裝。

安裝完,在eclipse中進行測試,新建一個Python模塊,輸入:

import bs4 print bs4

輸出為:

證明安裝成功。

?

BeautifulSoup的語法


?

其中搜索節點的find_all()方法可以搜索出所有符合要求的節點,而find()方法則只是搜索出符合條件的第一個節點。但是兩個函數的參數是完全相同的。

對應代碼:

1)創建BeautifulSoup對象

2)搜索節點(find_all、find)

其中紅色部分為正則表達式形式。

最后一句之所以"class_"要加上下劃線是因為要和Python的關鍵字"class"進行區分。

3)訪問節點信息

4)BeautifulSoup的實例測試

# coding:utf-8 from bs4 import BeautifulSoup import re print("Python3 的代碼如下") html_doc = """ 因字數限制,省略。請到 http://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-the-tree 復制吧 """soup = BeautifulSoup(html_doc, 'html.parser') print("獲取所有的鏈接") links = soup.find_all('a') for link in links:print(link.name, link['href'], link.get_text())print("獲取lacie的鏈接") link_node = soup.find('a', href="http://example.com/lacie") print(link_node.name, link_node['href'], link_node.get_text()) print("正則匹配") link_node = soup.find('a', href=re.compile(r"ill")) print(link_node.name, link_node['href'], link_node.get_text())print("獲取p段落文字") p_node = soup.find('p', class_="title") print(p_node.name, p_node.get_text())

?

實戰演練:爬取百度百科1000個頁面的數據


1)?實例爬蟲操作步驟

2)Python爬蟲實例-分析目標

?

?

?

?

?

?

?本篇博客參考慕課網課程:https://www.imooc.com/video/10683

?

轉載于:https://www.cnblogs.com/dudududu/p/8780442.html

總結

以上是生活随笔為你收集整理的Python开发爬虫之理论篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91n在线观看 | 色狠狠av老熟女 | 午夜视频在线免费看 | 国产欧美一区二区三区免费看 | 性福宝av | 极品av在线| 国产白浆一区二区 | 欧美日韩免费观看一区=区三区 | 欧美黄色三级视频 | 欧美一区二区三区在线 | 污网站免费观看 | 欧美xxxx18国产 | 国产精品网站在线 | 久操免费在线 | 久久精品免费av | 18禁超污无遮挡无码免费游戏 | 永久免费精品视频 | 亚洲精品国产精品国自产网站按摩 | 色午夜婷婷 | www.日韩在线观看 | 精品国产成人av | 午夜精品久久久久久久久久久久久 | 日本大尺度吃奶做爰视频 | 精品自拍偷拍视频 | 欧美影院在线 | 光明影院手机版在线观看免费 | 国产精品视频 | 无码精品视频一区二区三区 | 久一精品| 国产偷人爽久久久久久老妇app | 国产精品久久久久久在线观看 | 国产免费av网站 | 亚洲精品国产精品国自产观看浪潮 | 96人xxxxxxxxx69| 91精品国产一区二区三区香蕉 | 精品少妇久久 | 极品少妇xxxx精品少妇偷拍 | 激情宗合网 | 日韩国产欧美一区 | 国产专区av| 一区二区三区四区免费视频 | 亚洲三区精品 | 五十路黄色片 | 久久精品国产99国产 | 欧美另类69 | 女王人厕视频2ⅴk | 亚洲综合性 | 黄色一级视频免费看 | 九九黄色大片 | av最新版天堂资源在线 | 国产超碰97| 91成人看 | 123成人网 | 国产一区99 | 牲欲强的熟妇农村老妇女视频 | 亚洲高清在线观看视频 | 美国美女群体交乱 | 亚洲激情社区 | 欧美乱视频 | 欧美日韩亚洲国产精品 | 色婷婷亚洲一区二区三区 | 尤物网址在线观看 | 日本中文字幕在线观看视频 | 精品国产无码在线 | 视色网站| 女女调教被c哭捆绑喷水百合 | 骚视频在线观看 | 日本美女毛片 | 国产黄色大片在线观看 | 亚洲精品一线二线三线 | 国产色黄 | 男女做事网站 | 性生交大片免费看女人按摩 | 国产99re| 国产一级片免费 | www在线播放 | 欧美成人aaaaⅴ片在线看 | 激情自拍视频 | 精品一区二区精品 | 一本久道在线 | 校园激情亚洲 | 国产亚洲午夜 | 永久免费精品影视网站 | julia一区二区 | 男女视频一区 | 国产又粗又猛又爽又黄91 | 午夜影院在线观看 | 中国国产精品 | 91麻豆精品国产91久久久更新时间 | a级无毛片| av体验区 | 天堂网中文在线观看 | 人体裸体bbbbb欣赏 | 黄色网页在线播放 | 欧美视频在线不卡 | 日视频| 精品国产aⅴ一区二区三区四川人 | ass亚洲尤物裸体pics | 国产精品乱码久久久久久 |