图集谷-写真集-爬虫-1.0[通俗易懂]

图集谷-写真集-爬虫-1.0[通俗易懂]图集谷写真集爬虫

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 相信大家已经迫不及待地想想爬取自己想要的写真集了,那么我话不多说,直接上代码。

# 导入包
import os, time, requests
from lxml import etree

# 定义请求头
headers = {
        'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 UOS'
}

# 传入数据,例如'ttps://www.tujigu.net/a/33527'
# Num就取值33527
# Page_Num取值该写真集的页数
Num = input('enter the Num:')
Pages_Num = int(input('enter the Page_Num:')) + 1

# 创建图片url列表
img_src_list = []

# 创建url列表,并将写真集首页网页url写入网页列表中
url_header = 'https://www.tujigu.net/a/'
url_head = url_header + str(Num) +'/'
urls = [url_head]
time.sleep(1)    # 防止服务器封IP

# 在网页列表中写入其他页面url
for a in range(2, int(Pages_Num)):
    url_other = url_head + str(a) +'.html'
    urls.append(url_other)

# 获取所有图片url,并写入图片url列表中
for url in urls:
    res = requests.get(url, headers=headers)
    html = etree.HTML(res.text)
    img_original = html.xpath('//div[@class="content"]/img/@src')
    for img_src in img_original:
        img_src_list.append(img_src)
    time.sleep(1)

# 创建文件夹
res = requests.get(url=url_head, headers=headers)
res.encoding = 'utf-8'
html = etree.HTML(res.text)
img_alt = html.xpath('//div[@class="content"]/img/@alt')[0]
path_name = '/data/home/liu/Pictures/' + str(img_alt)    #此处引号中地址可改为其他地址
if not os.path.exists(path_name):
    os.mkdir(path_name)
path = path_name + '/'

# 下载图片
for src in img_src_list:
    img_data = requests.get(src, headers=headers).content
    name = src.split('/')[-1]
    with open(path + name, 'wb') as f:
        print(f'正在为您下载图片:{name}')
        f.write(img_data)
        f.close()
    time.sleep(1)
print('下载完成!!!')

代码中的path_name,由于我编写这个爬虫的时候用的是Linux系统,所以文件目录不一样,各位用windows系统的小伙伴儿们请自行修改。

这个爬虫,在我编写完成后,感觉有一点儿繁琐,所以,之后我会对这个代码进行修改。让我们期待下一个更加优秀的爬虫吧>_<

感谢大家的阅读,如果大家觉得还可以的话,可以酌情打赏一下(可怜巴巴…)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157810.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 金士顿16g u盘量产[通俗易懂]

    金士顿16g u盘量产[通俗易懂]1.首先用最新版本chipgenius查看芯片,如果老版本是识别不出来的。2.点击MPALL_F1_9000_v329_0B3.点击update出现芯片4.点击loadlastsetting。5.打开autodetect选项,mode为21,cdromsize为MB不填写自动分区,最后选择ISO文件本人是选…

    2022年9月10日
    0
  • python中的merge函数_Python Merge函数原理及用法解析[通俗易懂]

    python中的merge函数_Python Merge函数原理及用法解析[通俗易懂]Merge函数的用法jfz免费资源网简单来说Merge函数相当于Excel中的vlookup函数。当我们对2个表进行数据合并的时候需要通过指定两个表中相同的列作为key,然后通过key匹配到其中要合并在一起的values值。jfz免费资源网然后对于merge函数在Pandas中分为1vs1,多(m)vs1,以及多(m)vs多(m)这三种场景。但是平时用的最多的往往是多vs1的这种场景。也就是说2…

    2022年6月3日
    56
  • 你知道如何从零开始学c++游戏编程吗「建议收藏」

    你知道如何从零开始学c++游戏编程吗「建议收藏」在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指路,是可以事半功倍的。平台与编程语言选择首先,游戏开发的平台就有很多类型:个人主机平台:Windows、Linux、MacOC;移动平台:iOS、Android、WindowsPhone、BlackBerryOS、Symbian;专业主…

    2022年6月5日
    47
  • C语言中的结构体,结构体中数组初始化与赋值

    C语言中的结构体,结构体中数组初始化与赋值原作地址:https://www.cnblogs.com/zhangfeionline/p/5913905.html最近写c语言中的结构体遇到了些问题,从网上找了些资料如下:结构体是连续存储的,但由于结构体中成员类型各异,所以会存在内存对齐问题,也就是内存里面会有空档,具体的对齐方式这里暂不讨论;1.结构体的定义和赋值结构体是可以直接初始化的,在定义的时候,就可

    2022年7月18日
    10
  • linux 通配符 排除,linux通配符「建议收藏」

    linux 通配符 排除,linux通配符「建议收藏」今天在看linux中有关Makefile文件的写法的时候,提到了通配符的概念。感觉似乎挺熟悉,但一时间竟想不起来到底为何物!经过在网上查询现总结如下:1、linux中基本通配符:“?”可替代单个字符。“*”可替代任意字符。方括号“[charset]”可替代charset集中的任何单个字符。对最后一条做些解释。[cChH]通配符便可替代c或h字符的大小写形式。通配符集还能描述介于字符对之间的所有字符…

    2022年9月19日
    0
  • linux下开放oracle1521端口以便于远程连接

    linux下开放oracle1521端口以便于远程连接   1,利用root账号登录linux,输入命令:serviceiptablesstop(先把oracle防火墙给关闭)。   2.输入命令:vi /etc/sysconfig/iptables,在里面添加如下一行:      -A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport …

    2022年6月3日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号