1. 程式人生 > >python 爬蟲 定向爬取技術

python 爬蟲 定向爬取技術

本程式碼用來爬取“糗事百科”中的 使用者名稱 及其 段子
謹作為爬蟲入門的一個例子
歡迎各位同學批評及評論

# -*- coding: utf-8 -*-
import re
import urllib.request

def getcontent(url):
    #更改自己的User-Agent,讓所爬取網頁以為自己是瀏覽器訪問
    headers = ("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60")

    #建立opener  屬於隱藏真實訪問的範疇   偽裝自己的地址
    opener = urllib.request.build_opener()

    #通過更改User-Agent將自己偽裝成瀏覽器
    opener.addheaders = [headers]

    #將opener安裝為全域性  安裝opener
    urllib.request.install_opener(opener)

    #請求URL   開啟網頁獲取網頁資訊
    data=urllib.request.urlopen(url).read().decode('UTF-8')

    #正則表示式  匹配使用者名稱  因為觀察網頁的html得到使用者名稱都在<h2>裡面
    userpat = '<h2>(.*?)</h2>'

    #正則表示式  匹配段子內容,因為網頁的html得到段子內容都在class類 content裡面
    contentpat = '<div class="content">(.*?)</div>'

    #re.S  表示“.”(不包含外側雙引號,下同)的作用擴充套件到整個字串
    userlist = re.compile(userpat,re.S).findall(data)
    contentlist = re.compile(contentpat, re.S).findall(data)

    #for迴圈列印  使用者名稱 和  段子內容
    for x in range(0,len(contentlist)):
        #replace() 方法把字串中的 old(舊字串) 替換成 new(新字串) 如果指定第三個引數max,則替換不超過 max 次。 語法:str.replace(old, new,[max])
        a = userlist[x].replace('\n','')
        b = contentlist[x].replace('\n', '')
        dic = dict(user=a,content=b)
        print(dic)
#url = 'https://www.qiushibaike.com/8hr/page/1/'

#實現翻頁操作
for i in range(1,14):
    url = "https://www.qiushibaike.com/8hr/page/"+str(i)+"/"
    getcontent(url)