帮帮孩子吧
这是代码#调用库
import urllib.request as u_request
import os,re,base64
import time
import requests
#伪装成浏览器访问
header = {}
header['User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
#打开网址
def url_open(url):
html = requests.get(url,headers = header ).text #根据猜测来响应网页编码
return html
#正则表达式寻找图片地址
def find_images(url):
html = url_open(url)
m = r'<img src="([^"]+\.jpg)"'
match = re.findall(m,html)
#打印图片地址
for each in range(len(match)):
match = 'http:' + match
print(match)
return match
#下载相关图片
def save_images(floder,img_addrs):
for each in img_addrs:
try:
req = u_request.Request(each,headers = header)
response = u_request.urlopen(req)
cat_image = response.read()
filename = each.split('/')[-1]
with open(filename,'wb') as f:
f.write(cat_image)
#测试
#print(each)
except OSError as error:
print(error)
continue
except ValueError as error:
print(error)
continue
#下载图片的数量
def web_link_encode(url,folder):
for i in range(1,105):
string_date = '20210425_'
string_date = str(i)
string_date = string_date.encode('utf-8')
str_base64 = base64.b64encode(string_date)
page_url = url + str_base64.decode() + '=#comments'
print(page_url)
img_addrs = find_images(page_url)
save_images(folder,img_addrs)
time.sleep(2)
#主函数
def download_the_graph(url):
folder = 'graph'
os.mkdir(folder)
os.chdir(folder)
web_link_encode(url,folder)
if __name__ == '__main__':
url = 'http://jandan.net/girl/'
download_the_graph(url)
我想问m = r'<img src="([^"]+\.jpg)"'这一句,为什么正则表达式这样写
就能匹配http://wx2.sinaimg.cn/mw600/0076BSS5ly8gqeiqg7b0fj318y0u0b29.jpg这种网址
最好解释的详细一点
君苏依寂 发表于 2021-5-11 21:25
匹配的图片地址是http://wx2.sinaimg.cn/mw600/0076BSS5ly8gqeiqg7b0fj318y0u0b29.jpg
这种
m = r'
<img src= 是网页源代码就是这样写的啊图片地址前边是啥这里就是啥啊,就是做个定位啊 ([^"]+\.jpg) 先看 (),因为只有一个括号,表示取出符合括号内的链接,再往后看 ^" 表示非双引号 ,用[]框起来,再与+配合,表示 非双引号的元素出现一次或多次,
\. 表示点, 可以看https://tool.oschina.net/uploads/apidocs/jquery/regexp.html第一行, 最后以jpg结尾
总的来讲是:从src=" 开始取,如果满足 非双引号字符(至少出现一次),以.jpg结尾,则取出这个链接
个人理解 南归 发表于 2021-5-11 18:46
([^"]+\.jpg) 先看 (),因为只有一个括号,表示取出符合括号内的链接,再往后看 ^" 表示非双引号 ,用[] ...
src=什么意思
为什么是从src=开始呢,而不是前面的img 君苏依寂 发表于 2021-5-11 18:54
src=什么意思
为什么是从src=开始呢,而不是前面的img
这个应该要看网页源码了吧,你的图片地址肯定是src= “图片地址” 这样吧 代码小白liu 发表于 2021-5-11 20:19
这个应该要看网页源码了吧,你的图片地址肯定是src= “图片地址” 这样吧
匹配的图片地址是http://wx2.sinaimg.cn/mw600/0076BSS5ly8gqeiqg7b0fj318y0u0b29.jpg
这种
m = r'<img src="([^"]+\.jpg)"'
我对于
<img src=不理解,不明白这里为什么要这样写{:10_266:},你能帮帮我吧{:10_254:} 君苏依寂 发表于 2021-5-11 21:25
匹配的图片地址是http://wx2.sinaimg.cn/mw600/0076BSS5ly8gqeiqg7b0fj318y0u0b29.jpg
这种
m = r'
换个马甲就不认识了?
字符串s="src=abc123.jpg" ,用正则,你怎么找出 abc123.jpg ?
—— re.findall(r'src=(abc+.jpg)', s) 可否?
—— re.findall(r'src=(+.jpg)', s) 可否?懂?
正则表达式,说白了就是:根据这个特殊的式子,一个字符一个字符地去匹配,看是否合适
具体匹配的语法和作用,自己去菜鸟教程看看吧。有很多例子。 阿奇_o 发表于 2021-5-12 12:41
换个马甲就不认识了?
字符串s="src=abc123.jpg" ,用正则,你怎么找出 abc123.jpg ?
十分感谢{:10_254:} 代码小白liu 发表于 2021-5-11 20:19
这个应该要看网页源码了吧,你的图片地址肯定是src= “图片地址” 这样吧
十分感谢
页:
[1]