国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

服務器之家 - 腳本之家 - Python - python 網(wǎng)絡爬蟲初級實現(xiàn)代碼

python 網(wǎng)絡爬蟲初級實現(xiàn)代碼

2020-08-14 11:11ACdreamers Python

這篇文章主要介紹了python 網(wǎng)絡爬蟲初級實現(xiàn)代碼,需要的朋友可以參考下

首先,我們來看一個Python抓取網(wǎng)頁的庫:urllib或urllib2。

那么urllib與urllib2有什么區(qū)別呢?
可以把urllib2當作urllib的擴增,比較明顯的優(yōu)勢是urllib2.urlopen()可以接受Request對象作為參數(shù),從而可以控制HTTP Request的header部。
做HTTP Request時應當盡量使用urllib2庫,但是urllib.urlretrieve()函數(shù)以及urllib.quote等一系列quote和unquote功能沒有被加入urllib2中,因此有時也需要urllib的輔助。

urllib.open()這里傳入的參數(shù)要遵循一些協(xié)議,比如http,ftp,file等。例如:

urllib.open('http://www.baidu.com')
urllib.open('file:D\Python\Hello.py')

現(xiàn)在有一個例子,下載一個網(wǎng)站上所有gif格式的圖片。那么Python代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import re
import urllib
 
def getHtml(url):
 page = urllib.urlopen(url)
 html = page.read()
 return html
 
def getImg(html):
 reg = r'src="(.*?\.gif)"'
 imgre = re.compile(reg)
 imgList = re.findall(imgre,html)
 print imgList
 cnt = 1
 for imgurl in imgList:
  urllib.urlretrieve(imgurl,'%s.jpg' %cnt)
  cnt += 1
 
if __name__ == '__main__':
 html = getHtml('http://www.baidu.com')
 getImg(html)

根據(jù)上面的方法,我們可以抓取一定的網(wǎng)頁,然后提取我們所需要的數(shù)據(jù)。

實際上,我們利用urllib這個模塊來做網(wǎng)絡爬蟲效率是極其低下的,下面我們來介紹Tornado Web Server。
Tornado web server是使用Python編寫出來的一個極輕量級、高可伸縮性和非阻塞IO的Web服務器軟件,著名的Friendfeed網(wǎng)站就是使用它搭建的。Tornado跟其他主流的Web服務器框架(主要是Python框架)不同是采用epoll非阻塞IO,響應快速,可處理數(shù)千并發(fā)連接,特別適用用于實時的Web服務。

用Tornado Web Server來抓取網(wǎng)頁效率會比較高。
從Tornado的官網(wǎng)來看,還要安裝backports.ssl_match_hostname,官網(wǎng)如下:

http://www.tornadoweb.org/en/stable/

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import tornado.httpclient
 
def Fetch(url):
 http_header = {'User-Agent' : 'Chrome'}
 http_request = tornado.httpclient.HTTPRequest(url=url,method='GET',headers=http_header,connect_timeout=200,request_timeout=600)
 print 'Hello'
 http_client = tornado.httpclient.HTTPClient()
 print 'Hello World'
 
 print 'Start downloading data...'
 http_response = http_client.fetch(http_request)
 print 'Finish downloading data...'
 
 print http_response.code
 
 all_fields = http_response.headers.get_all()
 for field in all_fields:
  print field
 
 print http_response.body
 
if __name__ == '__main__':
 Fetch('http://www.baidu.com')

urllib2的常見方法:

 

(1)info() 獲取網(wǎng)頁的Header信息

(2)getcode() 獲取網(wǎng)頁的狀態(tài)碼

(3)geturl() 獲取傳入的網(wǎng)址

(4)read() 讀取文件的內(nèi)容

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩免费在线观看视频 | 国产日日夜夜操 | 亚洲精品一 | 欧美午夜精品久久久久免费视 | 精品91 | 91精品国产综合久久久久久漫画 | 久久久精品免费视频 | 亚洲精品系列 | 亚洲欧美在线观看 | 综合色网站 | 中文字幕一区二区三区不卡 | 视频一区二区三区中文字幕 | caoporn最新地址 | 国产精品污www一区二区三区 | 欧美日韩一 | 亚洲国产精品美女 | 蜜桃成人在线视频 | 日韩精品在线一区 | 中文字幕亚洲欧美 | 久久伊人亚洲 | 日本在线免费观看视频 | 精品国产子伦久久久久久小说 | 国产精品久久久久久久7电影 | 碰碰视频 | 综合伊人久久 | 久久成人一区二区 | 视频一二区 | 亚洲一区二区三区四区五区中文 | 亚洲成人黄色 | 在线亚洲电影 | 97天堂| 亚洲一区二区在线播放 | av看片| 黄色网页大全 | 午夜在线观看影院 | 国产精品久久久久久久久久久新郎 | 一级在线 | 国产一区二区视频在线观看 | 国产成人天天爽高清视频 | a国产视频| 欧美中文字幕一区二区三区亚洲 |