好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 wushaominkk 于 2020-4-30 15:48 编辑
[Python] 纯文本查看 复制代码 import requests
from lxml import etree
import os
import time
header = {
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36",
'referer': 'https://www.mzitu.com/'
}
'''列出来所有分页'''
url = 'https://www.mzitu.com/page/1/'#要爬取的地址
r = requests.get(url,headers =header).text#解析网页并转成文本
html = etree.HTML(r)#把解析好的网页转成xpath可爬取类型
max_page = html.xpath('//*[@class="nav-links"]/a/text()')#下面列表倒数第二个是总页数max_page[-2]
print(max_page[-2])
list_name = (''.join(html.xpath('//*[@class="main-image"]/p/a/img/@alt')))
i = 0#设定起点
while i < int(max_page[-2]):#循环输出列表页码
i = i + 1#循环一遍url+1
list_url = 'https://www.mzitu.com/page' + '/' + str(i)#拼接url
print(list_url)#输出每一页的url
'''获取分页中的图集url地址'''
r = requests.get(list_url, headers=header).text # 解析网页并转成文本
html = etree.HTML(r) # 把解析好的网页转成xpath可爬取类型
list_page_url = html.xpath('//*[@id="pins"]/li/a/@href')#获取列表中的图集url
for page_url in list_page_url:
print(page_url)#输出图集url
'''开始获取分页url'''
r = requests.get(page_url, headers=header).text # 解析网页并转成文本
html = etree.HTML(r) # 把解析好的网页转成xpath可爬取类型
max_page = html.xpath('//*[@class="pagenavi"]/a/span/text()') # 下面列表倒数第二个是总页数max_page[-2]
list_name = (''.join(html.xpath('//*[@class="main-image"]/p/a/img/@alt')))
if not os.path.exists(list_name):
os.mkdir(list_name)
i = 0 # 设定起点
while i < int(max_page[-2]): # 循环输出图集页码
i = i + 1 # 循环一遍url+1
list_url = page_url + '/' + str(i) # 拼接url
print(list_url)#输出url
time.sleep(1) # 每爬取一页停留一秒,给网站一个休息时间
'''开始下载图片'''
r = requests.get(list_url, headers=header).text # 解析网页并转成文本
html = etree.HTML(r) # 把解析好的网页转成xpath可爬取类型
pic_name = html.xpath('/html/body/div[2]/div[1]/h2/text()') # 图片标题
pic_url = html.xpath('/html/body/div[2]/div[1]/div[3]/p/a/img/@src') # 图片下载地址
for pic_name in pic_name: # 循环获取图片名字
for pic_url in pic_url: # 获取要下载图片的地址
with open(list_name + '/' + pic_name + '.jpg', 'wb') as pic:
pic_url = requests.get(pic_url, headers=header).content
pic.write(pic_url)
print(pic_name)#输出图片名称 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|