成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python3.5簡單爬蟲實例---檢測路由器流量并寫入txt

FleyX / 2685人閱讀

摘要:寫在前面本人的所有文章只適合善于使用百度的人,因為所有基礎(chǔ)知識個個博客復(fù)制粘貼了無數(shù)遍,我這里均不會詳細講述。

寫在前面

本人的所有文章只適合善于使用百度的人,因為所有基礎(chǔ)知識個個博客復(fù)制粘貼了無數(shù)遍,我這里均不會詳細講述。

在這里我表示所有不經(jīng)驗證的轉(zhuǎn)載都是耍流氓,把一篇篇錯誤的文章轉(zhuǎn)載的到處都是,不知道浪費了多少人的時間精力去反復(fù)調(diào)試錯誤的代碼,尤其是對初學者有極大的打擊性。

大家在學習python爬蟲的過程中,會發(fā)現(xiàn)一個問題,語法我看完了,說的也很詳細,我也認真看了,爬蟲還是不會寫,或者沒有思路,所以我的所有文章都會從實例的角度來解析一些常見的問題和報錯。

環(huán)境交代:win10+python3.6
代碼非常簡單,

模擬登陸,沒有

網(wǎng)頁標簽過濾,沒有

多線程,也沒有

文本處理,只有涉及到字符串截取

本地文本寫入,有

這么低級的代碼是因為這個路由器頁面非常垃圾,用不到~~~,不過這樣也適合初學者觀看,當然了,后續(xù)會嘗試添加更多功能


首先我們對自己的需求要進行分析,新手嘛,先把復(fù)雜的東西簡單化,模塊化,整理出思路,再一步步的去實現(xiàn),最后整合。

獲得數(shù)據(jù)

網(wǎng)頁編碼,編碼沒有處理好會報錯,涉及到一些函數(shù)

編碼轉(zhuǎn)換,read()方法獲取到的非字符串類型,要預(yù)先進行處理

處理數(shù)據(jù)

方法有很多,正則,字符串截取,等等不一一介紹,適合的才是最好的,我覺得正則是很強大的,但是也是相當反人類的

保存數(shù)據(jù)

注意win下路徑和linux下路徑寫法不同

寫入的編碼類型需要進行處理

重點講一講我遇到的坑

一般來講右鍵查看頁面編碼,如圖所示,因為在國外是非常奇怪的編碼

當時我就蒙蔽了,這是什么鬼~
這個時候我們需要用到chardet庫來判斷編碼類型,拿百度舉例,自行百度python第三方庫如何安裝,這里不做闡述

import chardet
import urllib.request
html = urllib.request.urlopen("http://www.baidu.com/").read()
print (chardet.detect(html))

得到的結(jié)果如下:

C:pythonpython.exe D:/python/test/2.py
{"encoding": "utf-8", "confidence": 0.99, "language": ""}

Process finished with exit code 0
1.取得字符串
import urllib.request
import os
from bs4 import BeautifulSoup
import time

def getHtml(url):
    html = urllib.request.urlopen(url).read()
    return html

#獲取字符串,因為我在國外,路由器low到爆,編碼格式也蛋疼了我很久
html = getHtml("http://192.168.0.254/pub/fbx_info.txt")
#將read()獲取的是bytes編碼轉(zhuǎn)化成str
html = html.decode("ISO-8859-1")

因為是歐洲網(wǎng)站,獲取的卻是一個 【ISO-8859-1】的網(wǎng)頁編碼。
由于這里我們用read()方法讀取,獲取到的是bytes類型,此時需要轉(zhuǎn)換成str類型的,才可以進行下一步的處理,如果不處理就會有下列錯誤
TypeError: a bytes-like object is required, not "str"
這里可以使用decode()方法處理一下
html = html.decode("ISO-8859-1")
使用type()方法檢測下編碼
print(type(html))
反饋,成功

2.處理字符串
#操作字符串
html = html.split("WAN")[1].split("Ethernet")[0]
time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
#因為使用記事本,在記事本中換行只認

str = time+html+"
"

這里我使用的是split()方法,使用方法呢,推薦大家學會查手冊,這里也不詳細再解釋了。
我通過split()方法截取到了自己需要的字符串,然后用time()函數(shù)獲取當前本地時間,然后用+連接符把當前本地時間和處理后的字符串連接起來,再在末尾接上換行符rn,因為懶到只用記事本,換行符這里只算一個小坑

3.寫入txt
# 保存文件為txt,win環(huán)境路徑
outfile = open("C:UsersswDesktop
oute.txt","a+",encoding="utf-8",newline="
")
outfile.write(str)
outfile.close()
print("文件已保存到本地")

關(guān)于open函數(shù),每一個參數(shù),此篇博文講的非常清楚非常詳細,感謝博主的整理,大家可以看看,建議收藏
http://blog.csdn.net/doiido/a...
要強調(diào)的有2個參數(shù)
encoding和newline,因為用的比較少,然后很多文章并不會提到


有人可能會說,哇,真的懶
沒錯,我就是懶,而且再說了,寫了還沒人家寫的好,那我何必誤人子弟。

下面貼上全部代碼

import urllib.request
import os
from bs4 import BeautifulSoup
import time

def getHtml(url):
    html = urllib.request.urlopen(url).read()
    return html

#獲取字符串,因為我在國外,路由器low到爆,編碼格式也蛋疼了我很久
html = getHtml("http://192.168.0.254/pub/fbx_info.txt")
#將read()獲取的是bytes編碼轉(zhuǎn)化成str
html = html.decode("ISO-8859-1")

#再次檢測編碼
#print(type(html))

#操作字符串
html = html.split("WAN")[1].split("Ethernet")[0]
time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
#因為使用記事本,在記事本中換行只認

str = time+html+"
"

# 保存文件為txt,注意win環(huán)境路徑寫法
#print(type(str))
outfile = open("C:UsersswDesktop
oute.txt","a+",encoding="utf-8",newline="
")
outfile.write(str)
outfile.close()
print("文件已保存到本地")

本來當初的想法是每秒獲取一次流量,寫入txt,再讀txt,通過數(shù)據(jù)來繪圖
但是有事暫時擱下了,只是win計劃任務(wù)定時運行,勉強湊活用下日后再學習補充

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41054.html

相關(guān)文章

  • scrapy_redis 和 docker 實現(xiàn)簡單分布式爬蟲

    摘要:簡介在使用爬取桔子公司信息,用來進行分析,了解創(chuàng)業(yè)公司的一切情況,之前使用寫了一個默認線程是的單個實例,為了防止被設(shè)置了下載的速度,萬多個公司信息爬了天多才完成,現(xiàn)在想到使用分布式爬蟲來提高效率。 簡介 在使用 scrapy 爬取 IT桔子公司信息,用來進行分析,了解 IT 創(chuàng)業(yè)公司的一切情況,之前使用 scrapy 寫了一個默認線程是10的單個實例,為了防止被 ban IP 設(shè)置了下...

    _DangJin 評論0 收藏0
  • scrapy_redis 和 docker 實現(xiàn)簡單分布式爬蟲

    摘要:簡介在使用爬取桔子公司信息,用來進行分析,了解創(chuàng)業(yè)公司的一切情況,之前使用寫了一個默認線程是的單個實例,為了防止被設(shè)置了下載的速度,萬多個公司信息爬了天多才完成,現(xiàn)在想到使用分布式爬蟲來提高效率。 簡介 在使用 scrapy 爬取 IT桔子公司信息,用來進行分析,了解 IT 創(chuàng)業(yè)公司的一切情況,之前使用 scrapy 寫了一個默認線程是10的單個實例,為了防止被 ban IP 設(shè)置了下...

    shaonbean 評論0 收藏0
  • Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---31、數(shù)據(jù)存儲:文件存儲

    摘要:如果該文件已存在,文件指針將會放在文件的結(jié)尾。運行結(jié)果以上是讀取文件的方法。為了輸出中文,我們還需要指定一個參數(shù)為,另外規(guī)定文件輸出的編碼。 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---30、解析庫的使用:PyQuery下一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---32、數(shù)據(jù)存儲:關(guān)系型數(shù)據(jù)庫存儲:MySQL 我們用解析器解析出數(shù)據(jù)之后,接下來的一步就是對數(shù)據(jù)進行存儲了,保存的形式可以...

    dreamans 評論0 收藏0
  • Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---2、請求庫安裝:GeckoDriver、PhantomJS、Aioh

    摘要:上一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)請求庫安裝下一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)解析庫的安裝的安裝在上一節(jié)我們了解了的配置方法,配置完成之后我們便可以用來驅(qū)動瀏覽器來做相應(yīng)網(wǎng)頁的抓取。上一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)請求庫安裝下一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)解析庫的安裝 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---1、請求庫安裝:Requests、Selenium、ChromeDriver下一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)--...

    Cristalven 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<