吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2550|回复: 13
收起左侧

[求助] 爬小姐姐图片看代码出不来图求求大佬让我活起来

[复制链接]
zheng8082 发表于 2022-2-19 03:47
在这个网站httpswww.kanxiaojiejie.com







import 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,'成功')

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

fllow 发表于 2022-2-19 09:15
出不来图是什么意思? 另外我看你正则匹配的和实际不太一样啊
<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"
ffzz 发表于 2022-2-19 09:16
wkfy 发表于 2022-2-19 09:22
本帖最后由 wkfy 于 2022-2-19 09:43 编辑

    if not os.path.exists('img/'+title):
        os.mkdir('img/'+title)

目录明显错误。你这么写还得保证img目录是存在的。
这代码好像不止一个错误,改起来不如重写一个……
h4LY85 发表于 2022-2-19 10:25
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获取链接文件名称

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
myhexdon254 + 1 我很赞同!
YR0207 + 1 + 1 就很厉害
The-rapist + 2 + 1 正则写得好啊!

查看全部评分

luyers 发表于 2022-2-19 11:28
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)[0]
    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:34
本帖最后由 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)[0]
        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)



这个吧 爬全部的
列明 发表于 2022-2-19 11:43
开篇就给了我想要的,果然还是你懂我!赞!
FIzz001 发表于 2022-2-19 13:33
感谢分享,非常有用啊,哈哈哈
ciker_li 发表于 2022-2-20 17:45
嗯… 无法访问此页面
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表