python 爬蟲 定向爬取技術
阿新 • • 發佈:2018-12-16
# -*- 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)