|
|
发表于 2019-8-8 15:33:23
|
显示全部楼层
小伙子,怎么还是你啊 昨天我还跟你说了,你最后一个downpic()的函数有问题,算了,送佛送到西。
- import requests
- from lxml import etree
- import urllib.request
- import os
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
- def get_detail_url():
- '''
- 用于获取详情页的url列表
- :return: 详情页的url列表
- '''
- base_url = 'http://mzitu.92game.net/mm/index_2.html'
- selector = etree.HTML(requests.get(base_url,headers=headers).content)
- detail_urls = []
- for i in selector.xpath('//div[@class="postlist"]/ul/li/a/@href'):
- detail_urls.append(i)
- return detail_urls
- def get_image_urls(urls):
- '''
- 请求详情页url列表,解析出图片的url地址
- :param urls: 详情页url列表
- :return: 图片的url列表
- '''
- image_urls = []
- for detail_url in urls:
- tar_url = 'http://mzitu.92game.net' + detail_url
- content = etree.HTML(requests.get(tar_url, headers=headers).content)
- image_url = content.xpath('//div[@class="main-image"]/p/a/img/@src')
- image_urls.append(image_url)
- return image_urls
- def down_pic(image_urls):
- path = os.getcwd() + "\" + "images"
- if not os.path.exists(path):
- os.mkdir(path)
- for image_url in image_urls:
- filename = path + "\" + image_url[0].split('/')[-1]
- urllib.request.urlretrieve(image_url[0], filename)
- if __name__ == '__main__':
- detail_urls = get_detail_url()
- image_urls = get_image_urls(urls=detail_urls)
- #print(image_urls)
- down_pic(image_urls)
复制代码
话说我上班的时候把这个运行了,妹子图下载了,我都不敢点开,万一是尺度大的,我怕是职业生涯也没了,哈哈。
你的代码不能运行重点在于最后那个urllib.request.urlretrieve(each,filename),filename是需要判断的,先指定一个文件路径,比如说D://meizitu//,然后再把图片的url地址分割下,留下xxx.jpg,然后组合起来,也就是说这个filename类似于D://meizitu//1.jpg之类的绝对地址才行。
你慢慢捋思路吧,熟悉了就好了,加油。 |
|