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获取链接文件名称

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)
    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)
      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

嗯… 无法访问此页面
页: [1] 2
查看完整版本: 爬小姐姐图片看代码出不来图求求大佬让我活起来