python爬取 优美图库 美女写真
本帖最后由 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
file = 'D:/photos/'+k #D盘创建一个photos 文件夹 保存照片
# 判断文件是否存在,不存在则创建
#获取页数
res1 = requests.get(urls,headers=headers)
data1 = res1.content.decode('utf-8')
part1 = '<li><a>共(.*?)页'
url_num =re.compile(part1,re.S).findall(data1)
print(url_num)
if not os.path.exists(file):
os.makedirs(file)
print('--创建成功--')
for n in range(0,eval(url_num)):
if n==0 :
urls3 = urls
else:
urls3 = urls[:-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,path)
print("下载完成,程序挂起0.5s") #防止爬取速度过快
time.sleep(0.5)
except Exception as err:
print(err) 921605039 发表于 2020-2-2 21:53
显示这些代码是啥意思,想爬点正经的图片当桌面,用了其它代码都有line 1,in,百度也找不到具体的 ...
requests 这个是python库 ,不是自带的,需要下载下载方式,win + R然后输入 cmd回车 在输入 pip install requests,就可以直接下载了。
显示这些代码是啥意思{:1_896:},想爬点正经的图片当桌面,用了其它代码都有line 1,in<module>,百度也找不到具体的答案
Traceback (most recent call last):
File "D:\桌面\Umei.py", line 1, in <module>
import requests
ModuleNotFoundError: No module named 'requests' 试试看哦{:1_918:}{:1_918:}{:1_918:} 感谢,学习借鉴 学习借鉴 了解一下... 男人的喜好:lol 加上多线程或者是scrapy岂不是更爽,你这也太慢了{:301_971:} lntuer 发表于 2020-2-2 13:59
加上多线程或者是scrapy岂不是更爽,你这也太慢了
没有使用scrapy框架,这个就是随便写的。改天我用scrapy写一个。 学习借鉴,谢谢 不错不错!非常感谢