一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python網絡爬蟲實例講解

Python網絡爬蟲實例講解

2020-08-21 10:33銀霜覆秋楓 Python

這篇文章主要為大家詳細介紹了Python網絡爬蟲實例,爬蟲的定義、主要框架等基礎概念,感興趣的小伙伴們可以參考一下

聊一聊Python與網絡爬蟲。

1、爬蟲的定義

爬蟲:自動抓取互聯網數據的程序。

2、爬蟲的主要框架

Python網絡爬蟲實例講解

爬蟲程序的主要框架如上圖所示,爬蟲調度端通過URL管理器獲取待爬取的URL鏈接,若URL管理器中存在待爬取的URL鏈接,爬蟲調度器調用網頁下載器下載相應網頁,然后調用網頁解析器解析該網頁,并將該網頁中新的URL添加到URL管理器中,將有價值的數據輸出。

3、爬蟲的時序圖

Python網絡爬蟲實例講解

4、URL管理器

URL管理器管理待抓取的URL集合和已抓取的URL集合,防止重復抓取與循環抓取。URL管理器的主要職能如下圖所示:

Python網絡爬蟲實例講解

URL管理器在實現方式上,Python中主要采用內存(set)、和關系數據庫(MySQL)。對于小型程序,一般在內存中實現,Python內置的set()類型能夠自動判斷元素是否重復。對于大一點的程序,一般使用數據庫來實現。

5、網頁下載器

Python中的網頁下載器主要使用urllib庫,這是python自帶的模塊。對于2.x版本中的urllib2庫,在python3.x中集成到urllib中,在其request等子模塊中。urllib中的urlopen函數用于打開url,并獲取url數據。urlopen函數的參數可以是url鏈接,也可以使request對象,對于簡單的網頁,直接使用url字符串做參數就已足夠,但對于復雜的網頁,設有防爬蟲機制的網頁,再使用urlopen函數時,需要添加http header。對于帶有登錄機制的網頁,需要設置cookie。

6、網頁解析器

網頁解析器從網頁下載器下載到的url數據中提取有價值的數據和新的url。對于數據的提取,可以使用正則表達式和BeautifulSoup等方法。正則表達式使用基于字符串的模糊匹配,對于特點比較鮮明的目標數據具有較好的作用,但通用性不高。BeautifulSoup是第三方模塊,用于結構化解析url內容。將下載到的網頁內容解析為DOM樹,下圖為使用BeautifulSoup打印抓取到的百度百科中某網頁的輸出的一部分。

Python網絡爬蟲實例講解

關于BeautifulSoup的具體使用,在以后的文章中再寫。下面的代碼使用python抓取百度百科中英雄聯盟詞條中的其他與英雄聯盟相關的詞條,并將這些詞條保存在新建的excel中。上代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from bs4 import BeautifulSoup
import re
import xlrd
<span style="font-size:18px;">import xlwt
from urllib.request import urlopen
 
 
 
excelFile=xlwt.Workbook()
sheet=excelFile.add_sheet('league of legend')
## 百度百科:英雄聯盟##
html=urlopen("http://baike.baidu.com/subview/3049782/11262116.htm")
bsObj=BeautifulSoup(html.read(),"html.parser")
#print(bsObj.prettify())
 
row=0
 
for node in bsObj.find("div",{"class":"main-content"}).findAll("div",{"class":"para"}):
  links=node.findAll("a",href=re.compile("^(/view/)[0-9]+\.htm$"))
  for link in links:
    if 'href' in link.attrs:
      print(link.attrs['href'],link.get_text())
      sheet.write(row,0,link.attrs['href'])
      sheet.write(row,1,link.get_text())
      row=row+1
 
 
excelFile.save('E:\Project\Python\lol.xls')</span>

輸出的部分截圖如下:

Python網絡爬蟲實例講解
 

excel部分的截圖如下:

Python網絡爬蟲實例講解

以上就是本文的全部內容,希望對大家學習Python網絡爬蟲有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲免费大全 | 99久精品 | 日日操日日舔 | 校花在公车上被内射好舒服 | 电车痴汉(han) | 国产精品视频久久 | 成人在线观看视频免费 | 亚洲 欧美 国产 日韩 字幕 | 扒开斗罗美女了的胸罩和内裤漫画 | 午夜福到在线4国产 | 精品女同一区二区三区免费站 | 91啦中文在线观看 | 91香蕉官网| 波多野结衣不卡 | 国产麻豆在线观看网站 | 色琪琪久久草在线视频 | 小嫩videos| 青青青手机在线视频 | 胖女性大bbbbbb | 变态np虐高h | 国产精品手机视频一区二区 | 99久久精品免费看国产 | 香蕉精品视频 | 娇妻与公陈峰姚瑶最新版 | 亚洲黄色大片 | 四虎影院新网址 | 色婷婷六月丁香在线观看 | 亚洲男人天 | 99影视在线视频免费观看 | 成年女人毛片免费观看97 | 精品视频免费在线 | 蜜月aⅴ免费一区二区三区 蜜桃影像传媒推广 | a在线观看欧美在线观看 | 亚洲精美视频 | 国产成人精品三级在线 | 亚洲精品国产精品国自产观看 | 激情综合站| 日韩欧美一区二区三区 | 美女天天色 | 人与动人物性行为zozo共患病 | 青青草成人在线观看 |