1. 程式人生 > >幾行代碼抓取百度首頁

幾行代碼抓取百度首頁

python 百度

python中源碼位置(以urllib為例):
python中自帶的模塊:
/usr/lib/python3.5/urllib/request.py(python3)
/usr/lib/python2.7/urllib2.py(python2)

python的第三方模塊:
/usr/local/lib/python2.7/site-packages/

註意:關於urllib模塊,python3中的導入方法為import urllib.request.方法名


例子1:返回百度首頁內容:

    #!/usr/bin/env python
    # coding=utf-8

    import urllib2
    #向指定的URL地址發送請求,並返回服務器響應的類文件對象
    response = urllib2.urlopen("http://www.baidu.com")

    #服務器返回的類文件對象支持python文件對象的操作方法 
    #read()方法就是讀取文件裏的全部內容,返回字符串
    html = response.read()

    #打印響應內容
    print(html)

    註意:urlopen可以直接請求一個類文件對象,但是它不支持請求頭構造(
    在反爬過程中,服務器可能會查看我們的請求頭,而默認的請求頭很容易被識別
    為爬蟲,如python爬蟲頭部的User-Agent為Python-urllib/%s" % __version__
    可以通過查看urllib2源碼或抓包查看.
    

    ),所以生產中的寫法如下:
    #!/usr/bin/env python
    # coding=utf-8

    import urllib2

    #User-Agent是爬蟲和反爬蟲的第一步
    ua_headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3253.3 Safari/537.36",
    }

    #通過urllib2.Request()方法構造一個請求對象
    request = urllib2.Request("http://www.baidu.com",headers = ua_headers)

    #向指定的URL地址發送請求,並返回服務器響應的類文件對象
    response = urllib2.urlopen(request)

    #服務器返回的類文件對象支持python文件對象的操作方法 
    #read()方法就是讀取文件裏的全部內容,返回字符串
    html = response.read()

    #打印響應內容
    print(html)

    #打印返回的狀態碼
    print(response.getcode())

    #打印具體返回頁面的是哪個URL


幾行代碼抓取百度首頁