爬小姐姐图片看代码出不来图求求大佬让我活起来
在这个网站httpswww.kanxiaojiejie.comimport requests# 加载网页请求模块
import re# 使用正则表达式 简单解释:匹配网页中出现的一段代码,将其全部获取
import parsel
import os
from parsel import selector
wangzhan = requests.get("https://www.kanxiaojiejie.com/page/1")# 访问目标网站
heml_1 = wangzhan.text# 将获取到目标网站的数据存在heml中
zip_1 = re.findall('<a href=(.*?)target="_blank"rel="bookmark">(.*?)</a>', heml_1)
# 一定要注意空格空格空格
for url, title in zip_1:
if not os.path.exists('img'/'+title'):
os.mkdir('img'/'+title')
tupian = requests.get(url)
heml_2 = tupian.text
select = parsel.Selector(heml_2)
jieshoushuju = selector.css('p>img::attr(src)').getall()# attr()提取括号里的属性内容src
for img in jieshoushuju:
tiquneirong = requests.get(img).content# content是获取二进制的数据 二进制数据是图片 音频 视频
tupian_name = img.split('?')[-1]# 准备给图片命名
with open(f'img/{title}/{tupian_name}', mode="wb") as f:
f.write(tiquneirong)
print(tupian_name, '成功')
print(title,'成功')
出不来图是什么意思? 另外我看你正则匹配的和实际不太一样啊
<img fifu-featured="1" width="520" src="https://img1.ledchuzu.com/2022/02/18/40e983395d1a61213a357c27cfd3c164.jpg" class="attachment-gridzone-medium-h size-gridzone-medium-h wp-post-image" alt="20220218-5" title="20220218-5" 好代码,我先收藏了。 本帖最后由 wkfy 于 2022-2-19 09:43 编辑
if not os.path.exists('img/'+title):
os.mkdir('img/'+title)
目录明显错误。你这么写还得保证img目录是存在的。
这代码好像不止一个错误,改起来不如重写一个…… import requests# 加载网页请求模块
import re# 使用正则表达式 简单解释:匹配网页中出现的一段代码,将其全部获取
import parsel
import os
wangzhan = requests.get("https://www.kanxiaojiejie.com/page/1")# 访问目标网站
heml_1 = wangzhan.text# 将获取到目标网站的数据存在heml中
zip_1 = re.findall('<a href=\"(.*?)\" target="_blank"rel="bookmark">(.*?)</a>', heml_1)
# 一定要注意空格空格空格
for url, title in zip_1:
if not os.path.exists(title):
os.mkdir(title)
tupian = requests.get(url)
heml_2 = tupian.text
select = parsel.Selector(heml_2)
jieshoushuju = select.css('img::attr(src)').getall()# attr()提取括号里的属性内容src
for img in jieshoushuju:
tiquneirong = requests.get(img).content# content是获取二进制的数据 二进制数据是图片 音频 视频
tupian_name = os.path.basename(img)# img.split('?')[-1]# 准备给图片命名
with open(f'{title}/{tupian_name}', mode="wb") as f:
f.write(tiquneirong)
print(tupian_name, '成功')
print(title,'成功')
第一块<a href=(.*?)target="_blank"rel="bookmark">(.*?)</a> 正则匹配有问题,既然使用了parsel,为什么不用这个去处理呢?
第二个路径这里'img'/'+title',执行就会报错吧,
第三个select = parsel.Selector(heml_2)
jieshoushuju = selector.css('p>img::attr(src)').getall()# attr()提取括号里的属性内容src
这里的selector.css应该是select.css,p>img我改成了img,
第四个tupian_name = img.split('?')[-1]# 准备给图片命名这个名称可以直接使用os.path.basename获取链接文件名称 import requests# 加载网页请求模块
import re# 使用正则表达式 简单解释:匹配网页中出现的一段代码,将其全部获取
import os
from parsel import selector
if not os.path.exists('img'):
os.mkdir('img')
response = requests.get("https://www.kanxiaojiejie.com/page/1").text# 访问目标网站
urls = re.findall('<a class="entry-thumbnail" href="(.*?)" target="_blank">', response)
# 一定要注意空格空格空格
for url in urls:
res = requests.get(url).text
# print(res)
img_list = re.findall('<img src="(https://img.*?)" />', res)
img_title =re.findall('<h1 class="entry-title">(.*?)</h1>', res)
if not os.path.exists('img/'+ img_title):
os.mkdir('img/'+ img_title)
for img_url in img_list:
img = requests.get(img_url).content# content是获取二进制的数据 二进制数据是图片 音频 视频
img_name = img_url.split('/')[-1]# 准备给图片命名
with open(f'img/{img_title}/{img_name}', mode="wb") as f:
f.write(img)
print(img_name, '成功')
print(img_title,'成功') 本帖最后由 luyers 于 2022-2-19 11:37 编辑
import requests# 加载网页请求模块
import re# 使用正则表达式 简单解释:匹配网页中出现的一段代码,将其全部获取
import os
from parsel import selector
if not os.path.exists('img'):
os.mkdir('img')
def get_xjj(num):
response = requests.get(f"https://www.kanxiaojiejie.com/page/{num}").text# 访问目标网站
urls = re.findall('<a class="entry-thumbnail" href="(.*?)" target="_blank">', response)
# 一定要注意空格空格空格
for url in urls:
res = requests.get(url).text
# print(res)
img_list = re.findall('<img src="(https://img.*?)" />', res)
img_title = re.findall('<h1 class="entry-title">(.*?)</h1>', res)
if not os.path.exists('img/' + img_title):
os.mkdir('img/' + img_title)
for img_url in img_list:
img = requests.get(img_url).content# content是获取二进制的数据 二进制数据是图片 音频 视频
img_name = img_url.split('/')[-1]# 准备给图片命名
with open(f'img/{img_title}/{img_name}', mode="wb") as f:
f.write(img)
print(img_name, '成功')
print(img_title, '成功')
if __name__ == '__main__':
for i in range(1, 110):
get_xjj(i)
这个吧 爬全部的 开篇就给了我想要的,果然还是你懂我!赞! 感谢分享,非常有用啊,哈哈哈 嗯… 无法访问此页面
页:
[1]
2