1. 程式人生 > >Python的學習筆記DAY6---爬蟲(1)

Python的學習筆記DAY6---爬蟲(1)

        爬蟲,全稱網路爬蟲,是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。

        要寫爬蟲,首先需要寫的程式能連線到網路,Python提供了urllib模組可以用來連線網路,一個簡單的例子如下:

import urllib.request

response = urllib.request.urlopen('http://www.baidu.com')
print(response.read())

        執行結果如下圖所示:


        一堆程式碼,表示已經把百度首頁的程式碼打開了,看程式碼前面,編碼應該是UTF-8的,把這些程式碼轉換成UTF-8的再來看看:

程式碼:

import urllib.request

response = urllib.request.urlopen('http://www.baidu.com')
html = response.read()
html = html.decode('utf-8')
print(html)


        雖然也很亂,好歹比剛才好點了。。。。。。。。

        每次要看編碼格式很麻煩,Python裡有個三方的模組叫做chardet,是用來識別編碼型別的,非常的好用,安裝三方模組呢,推薦使用pip方法,開啟windows的命令提示符

輸入pip install chardet 即可,如下圖所示:


        安裝成功後就可以呼叫了,用法如下:

import urllib.request
import chardet

response = urllib.request.urlopen("http://www.bilibili.com").read()
a = chardet.detect(response)
print(a)
---------------------------------------------------------------------
{'confidence': 0.99, 'encoding': 'utf-8'}

        如上所示,返回了編碼是utf-8,可能性是0.99,下面再寫一個使用者輸入url然後返回該地址的編碼的例子:

import urllib.request
import chardet

def main():
    url = input('請輸入網址:')

    response = urllib.request.urlopen(url)
    html = response.read()

    encode = chardet.detect(html)['encoding']
    if encode == 'GB2312':
        encode = 'GBK'

    print('此網頁編碼為:%s' % encode)


main()

--------------------------------------------------------
請輸入網址:http://www.baidu.com
此網頁編碼為:utf-8

請輸入網址:http://www.bilibili.com
此網頁編碼為:utf-8