疫情期间在家闲来无事,每天打游戏荒废了一段时间。我觉得自己不能在这么颓废下去,就立马起身写了一点python代码(本人只是python新手)。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789

找来找去突然找到一个不错的网站(你懂得),看见上面的照片于是起来自己写了一个小程序能够自动爬取这个网站照片的小程序来练练手

上网站:

https://www.meizitu.com/a/xinggan_2_1.html

画面过于美好先打上一波马赛克,马赛克之前的模样。

自己想象一下

第一打开网站 我们按f12查看源代码发现,这里的图片的xpath只有缩略图,但是他的a标签里的href的网址有他大照片的地址,我们点进去查看后,发现img里面有src。

这里  如果只是单纯的爬取他的src,那我们爬取的就只有这一个页面,如果还要在爬取其他页面还要在修改地址很麻烦。

所以第一步我们用xpath先来定位缩略图里面a标签里面的href,将他生成一个列表,同时我们发现所有缩略图的xpath都是有规律的所以这样无疑减少了很多难度。

其二打开缩略图,发现图片的xpath也是很好获取

好了上源码

import requests

from lxml import etree

import time

class sprider(object):

def __init__(self):

self.header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}

def url(self):

url = 'https://www.meizitu.com/a/xinggan_2_1.html'

response = requests.get(url,headers=self.header)

selector = etree.HTML(response.content)

for i in range(1,31):

url2 = selector.xpath('//*[@id="maincontent"]/div[1]/ul/li[%d]/div/div/a/@href' %(i))[0]

response2 = requests.get(url2,headers=self.header)

selector2 = etree.HTML(response2.content)

self.pc(selector2)

def pc(self,selector2):

for i in range(1,12):

time.sleep(2)

src = selector2.xpath('//*[@id="picture"]/p/img[%d]/@src' %(i))

title = selector2.xpath('//*[@id="picture"]/p/img[%d]/@alt' %(i))

print(title)

print(src)

self.write(src,title)

def write(self,src,title):

for a,b in zip(src,title):

name = b ".jpg"

print("正在抓取",name)

photo = requests.get(a,headers=self.header)

time.sleep(5)

with open(name,"wb") as f:

f.write(photo.content)

s = sprider()

s.url()

ps:这个只是我自己编写的一个小程序  仅供学习  想自己用的话还要结合自己的实际情况  比如User-Agent头  要替换成自己的

开始运行之后啊就可以看见一张张照片存放在自己的文件夹里了可能会比较慢  没加多线程  后续有时间我会在写一篇多线程的文章

见谅见谅

默认存放在这个程序所在的文件夹

注:本文只提供技术分享,请勿用作其他非法用途。如果造成任何法律部后果与本文作者无关

最新文章

  1. 随便记录下系列 - node->express
  2. AngularJS 细节
  3. PHP异步调用多线程
  4. maven 加入json-lib.jar 报错 Missing artifact net.sf.json-lib:json-lib:jar:2.4:compile
  5. Shell中的判断标志
  6. TJI读书笔记15-持有对象
  7. android开发------编写用户界面之线性布局(补充知识)
  8. 浅入ARP
  9. [Git] Git 文件归档, include submodule
  10. Oracle冷备份及其恢复
  11. Spring Boot实现一个监听用户请求的拦截器
  12. MyBatis(3.2.3) - Configuring MyBatis using XML, Properties
  13. LeetCode Excel Sheet Column Title (输出excel表的列名称)
  14. SWFUpload无刷新文件批量上传
  15. 在cocos2d-x界面中嵌入Android的WebView
  16. Chapter 13. Miscellaneous PerlTk Methods PerlTk 方法杂项:
  17. java变量、二进制、数据类型、原码、补码、反码
  18. linux相关命令及配置(四)
  19. Electron学习(一)——— electron的安装
  20. [视频]youku与56客户端DLL却持

热门文章

  1. scrapy 基础组件专题(十四):scrapy CookiesMiddleware源码
  2. 数据可视化之powerBI基础(九)Power BI中的“新表”,你会用吗?
  3. Django框架04 /模板相关、别名/反向解析/路由分发
  4. drf☞jwt自动签发与手动签发
  5. 用Vue实现一个简单的图片轮播
  6. 【最短路+bfs+缩点】Paint the Grid Reloaded ZOJ - 3781
  7. Jmeter(十八) - 从入门到精通 - JMeter后置处理器 -下篇(详解教程)
  8. Git别名和配置文件
  9. 深度搜索---------Lake counting
  10. [难题题解] [BZOJ1875] [SDOI2009] HH去散步