突然某一天想爬一下頁面圖片,然後就開始了python爬蟲的過程
然後打開了百度貼吧的某個頁面 http://tieba.baidu.com/p/2460150866 開始咯
一、首先要請求到這個頁面 那麼需要引用python的urllib.request 模塊
在請求中增加表頭是有些網站對爬蟲的訪問一律拒絕 所以增加表頭是為了模仿瀏覽器訪問此網站
https://docs.python.org/3/library/urllib.request.html
import urllib.request as urlre
def open_url(url):
req = urlre.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36')
page = urlre.urlopen(req)
html = page.read().decode('utf-8')
print(type(html))
return html
if __name__ == "__main__":
url="http://tieba.baidu.com/p/2460150866“
open_url(url)
二、那麼我們要找到這些照片在什麼元素裡邊 有什麼規則呢 如下圖
都在<img 標籤裡邊 然後class 都相同 都是.jpg的後綴 這個時候要引用正則模塊
試試看正則是否正確
import re
def get_img(html):
p = r'src="(.+?\.jpg)" pic_ex'
imgsa = re.compile(p)
imglist = re.findall(imgsa,html)
for each in imglist:
print(each)
return imglist
如下圖 正則的匹配是OK的 那麼這個時候如果將圖片保存到本地呢
將for循環改成如下 需要用到urlretrieve模塊
保存為%s.jpg的文件到本地
x = 0
for each in imglist:
urlre.urlretrieve(each,'%s.jpg' % x)
x += 1
return imglist
大功搞成