吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12119|回复: 48
收起左侧

[Python 转载] python爬取 优美图库 美女写真

  [复制链接]
QingYeMuRong 发表于 2020-2-2 13:27
本帖最后由 QingYeMuRong 于 2020-2-2 14:18 编辑

源码分享  附件文件自己下载,下载后把后缀.txt修改成.py就可以了,  这个爬虫使用的是for循环,适合新手学习。有兴趣的朋友可以自己改成def函数形式或者class类。

Author = QingYeMuRong

    import requests
    from lxml import etree
    from urllib.request import urlretrieve
    from urllib.parse import urlencode
    import re
    import os
    import time
    import random
    ua = [  "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36", #chrome
                                    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)", #搜狗
                                    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)", #360
                                    "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0" #火狐
                                    ]
    headers ={
                    "User-Agent":random.choice(ua)
                    }
    print(random.choice(ua))
    for i in range(1,2):  #可以自己定义爬取页数  这个文档就爬取1页
                    url = "http://www.umei.cc/meinvtupian/meinvxiezhen/"+str(i)+".htm"
                    res = requests.get(url,headers=headers)
                    data = res.content.decode('utf-8')
                    treeData = etree.HTML(data)
                    title = treeData.xpath('//title/text()')
                    print(title)
                    urls = treeData.xpath('//*[@class="TypeList"]/ul/li/a/@href') #起始地址url
                    titles = treeData.xpath('//*[@class="TypeList"]/ul/li/a/div/text()') #所有的url起始地址名称
                    print(urls)
                    print(titles)
                    for j in range(0,len(urls)):
                                    k=titles[j]
                                    file = 'D:/photos/'+k #D盘创建一个photos 文件夹 保存照片
                                    # 判断文件是否存在,不存在则创建
                                    #获取页数
                                    res1 = requests.get(urls[0],headers=headers)
                                    data1 = res1.content.decode('utf-8')
                                    part1 = '<li><a>共(.*?)页'
                                    url_num =re.compile(part1,re.S).findall(data1)
                                    print(url_num[0])
                                    if not os.path.exists(file):
                                                    os.makedirs(file)
                                                    print('--创建成功--')

                                    for n in range(0,eval(url_num[0])):
                                                    if n==0 :
                                                                    urls3 = urls[j]
                                                    else:
                                                                    urls3 = urls[j][:-4]+'_'+str(n+1)+'.htm'
                                                                    # print(urls3)
                                                    print(urls3)
                                                    try:
                                                                    res2 = requests.get(urls3,headers=headers)
                                                                    data2 = res2.content.decode('utf-8')
                                                                    # print(data1)
                                                                    part2 = '<img alt.*?src="(.*?)" />'
                                                                    photo_url = re.compile(part2,re.S).findall(data2)
                                                                    print(photo_url)
                                                                    path = 'D:/photos/'+k+'/'+str(n+1)+'.jpg'
                                                                    urlretrieve(photo_url[0],path)
                                                                    print("下载完成,程序挂起0.5s") #防止爬取速度过快
                                                                    time.sleep(0.5)
                                                    except Exception as err:
                                                                    print(err)
Ashampoo_Snap_2020年2月2日_13h09m29s_002_.png
Ashampoo_Snap_2020年2月2日_13h09m59s_003_.png
Ashampoo_Snap_2020年2月2日_13h08m48s_001_.png

Umei.txt

2.63 KB, 下载次数: 565, 下载积分: 吾爱币 -1 CB

某度无法分享,下载后把后缀.txt改成.py就行

免费评分

参与人数 8吾爱币 +7 热心值 +6 收起 理由
jiangjgong + 1 + 1 热心回复!
CloudWorld + 1 求解答
xzh1988 + 1 + 1 谢谢@Thanks!
知意执意 + 1 谢谢@Thanks!
路漫漫w + 1 + 1 热心回复!
shuai23long + 1 + 1 我很赞同!
nanmobei + 1 + 1 谢谢@Thanks!
lntuer + 1 Life is short, i love python!

查看全部评分

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

 楼主| QingYeMuRong 发表于 2020-2-3 11:23
921605039 发表于 2020-2-2 21:53
显示这些代码是啥意思,想爬点正经的图片当桌面,用了其它代码都有line 1,in,百度也找不到具体的 ...

requests 这个是python库 ,不是自带的,需要下载  下载方式,win + R  然后输入 cmd  回车 在输入 pip install requests  ,就可以直接下载了。
921605039 发表于 2020-2-2 21:53
显示这些代码是啥意思,想爬点正经的图片当桌面,用了其它代码都有line 1,in<module>,百度也找不到具体的答案
Traceback (most recent call last):
  File "D:\桌面\Umei.py", line 1, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'
我傻瓜1991 发表于 2020-2-2 13:36
傻小猪 发表于 2020-2-2 13:43
感谢,学习借鉴
Rock_L 发表于 2020-2-2 13:45
学习借鉴
yox 发表于 2020-2-2 13:50
了解一下...
zgmn001 发表于 2020-2-2 13:56
男人的喜好
lntuer 发表于 2020-2-2 13:59
加上多线程或者是scrapy岂不是更爽,你这也太慢了
 楼主| QingYeMuRong 发表于 2020-2-2 14:02
lntuer 发表于 2020-2-2 13:59
加上多线程或者是scrapy岂不是更爽,你这也太慢了

没有使用scrapy框架,这个就是随便写的。改天我用scrapy写一个。
airborne 发表于 2020-2-2 14:18
学习借鉴,谢谢
zkq970413 发表于 2020-2-2 14:23
不错不错!非常感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 14:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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