首页 » PHP教程 » php筛选图片技巧_Python|爬取网页图片流程及语法解释附代码

php筛选图片技巧_Python|爬取网页图片流程及语法解释附代码

访客 2024-12-03 0

扫一扫用手机浏览

文章目录 [+]

1 利用urllib.request模板要求返回网页文本;

2 从网页文本中利用正则表达式筛选出img src地址(返回一个全部src的列表);

php筛选图片技巧_Python|爬取网页图片流程及语法解释附代码

3 图片文件逐一检索或复制;

php筛选图片技巧_Python|爬取网页图片流程及语法解释附代码
(图片来自网络侵删)

代码:

运行效果:

附代码1:

import re

import urllib.request

import os

#1 抓取网页

#url = 'http://www.kgc.cn/list'

url = 'http://www.ttpaihang.com/vote/rank.php?voteid=1410&page=2'

req = urllib.request.urlopen(url)

buf = req.read()

req.close()

#2 获取图片地址

i = url.find(\"大众/\"大众,9) # 本句及下面三句截取url的前半截

url2 = url

if i > 0 :

....url2 = url[:i]

#buf = buf.decode('UTF-8')

buf = buf.decode('gb2312')

#listurl = re.findall(r'http:.[^\"大众]+\.jpg',buf)

listurl = re.findall(r'img src=.[^\"大众]+\.jpg',buf)

for i in range(len(listurl)):.... # 把字符img src=\公众去掉

....listurl[i]=listurl[i].replace('img src=\公众',\"大众\"大众)

....if not re.match(\"大众http\"大众,listurl[i]):

........listurl[i]=url2 + listurl[i]

....print(listurl[i])

#3 抓取图片并保存到本地

i = 0

fpath = \"大众D:\\pic2\\\"大众

if not os.path.isdir(fpath):

....os.mkdir(fpath)

for url in listurl:

....f=open(fpath + str(i)+'.jpg','wb')

....req = urllib.request.urlopen(url)

....buf = req.read()

....f.write(buf)

....f.close()

....i+=1

........

附代码2(写成函数的形式)

import re .... .... .... .... # 正则表达式

import urllib.request .... .... # 从做事器要求返回资源

import os .... .... .... .... # 文件和目录操作

import socket .... .... .... .... # 套接字操作

#socket.setdefaulttimeout(20)....................# 设置socket层的超时时间为20秒

def gethtml(url): #1 抓取网页html内容

....with urllib.request.urlopen(url) as req:

........buf = req.read()

........return buf

def getImg(buf,codec,fpath): #2 从html筛选图片地址到list

....i = url.find(\"大众/\"大众,9)............................ # 本句及下面三句截取url的前半截

....url2 = url

....if i > 0 :

........url2 = url[:i]

....buf = buf.decode(codec)

....

....reg = r'img src=\公众(.+?\.jpg)\"大众'....#正则表达式,得到图片地址

....#listurl = re.findall(r'http:.[^\"大众]+\.jpg',buf)

....#listurl = re.findall(r'img src=.[^\"大众]+\.jpg',buf)

....listurl = re.findall(reg,buf)

....print(\公众准备下载图片数量:\"大众,len(listurl))

....for i in range(len(listurl)):................

........#listurl[i]=listurl[i].replace('img src=\公众',\公众\"大众) # 把字符img src=\"大众去掉

........if not re.match(\"大众http\"大众,listurl[i]):

............listurl[i]=url2 + listurl[i]

........print(listurl[i])

............#3 抓取图片并保存到本地

....i = 0

....

....if not os.path.isdir(fpath):

........os.mkdir(fpath)

....'''

....for imgurl in listurl:

........urllib.request.urlretrieve(imgurl,fpath + str(i)+'.jpg')

........i+=1

....'''#下面的操作办法要快一点

....for imgurl in listurl:

........f=open(fpath + str(i)+'.jpg','wb') # 新建空缺图片文件

........req = urllib.request.urlopen(imgurl) # 获取网页图片文件

........buf = req.read().... .... .... # 读取网站上图片文件内容

........f.write(buf).... .... .... # 将网站上图片内容写入新建的图片文件

........f.close()

........i+=1

# 四处内容须要确认:1 网页url; .... ....2 网页编码UTF-8或gb2312;

#................ 3 图片扩展名jpg或png(两处); 4 保存的文件夹

#url = 'http://www.kgc.cn/list'

url = 'http://www.ttpaihang.com/vote/rank.php?voteid=1410&page=3'

buf = gethtml(url)

#codec = 'UTF-8'

codec = 'gb2312'

fpath = \"大众D:\\pic4\\\公众

print(getImg(buf,codec,fpath))

-End-

标签:

相关文章

执业药师试卷代码解码药师职业发展之路

执业药师在药品质量管理、用药安全等方面发挥着越来越重要的作用。而执业药师考试,作为进入药师行业的重要门槛,其试卷代码更是成为了药师...

PHP教程 2025-02-18 阅读0 评论0

心灵代码主题曲唤醒灵魂深处的共鸣

音乐,作为一种独特的艺术形式,自古以来就承载着人类情感的表达与传递。心灵代码主题曲,以其独特的旋律和歌词,唤醒了无数人的灵魂深处,...

PHP教程 2025-02-18 阅读0 评论0

探寻福建各市车牌代码背后的文化内涵

福建省,地处我国东南沿海,拥有悠久的历史和丰富的文化底蕴。在这片充满魅力的土地上,诞生了许多具有代表性的城市,每个城市都有自己独特...

PHP教程 2025-02-18 阅读0 评论0

探寻河北唐山历史与现代交融的城市之光

河北省唐山市,一座地处渤海之滨,拥有悠久历史和独特文化的城市。这里既是古丝绸之路的起点,也是中国近代工业的发源地。如今,唐山正以崭...

PHP教程 2025-02-18 阅读0 评论0