1.xpath使用

使用之前,传统艺能就是先导入该模块parsel

之前我们匹配我们想要的内容比如链接,文字这些内容我们是不是都是通过正则表达式来爬取的
不知道大家看完之后是不是觉得正则表达式好难,不知道你们怎么觉得,反正博主自己觉得好难。
于是博主就发现了一个新的模块xpath,自己用完之后发现,卧槽!!!!!!这样爬虫也太简单了吧

其实大家根据xpath这个名字就能看出来他是通过路径来查找我们需要的元素的。
其实我们随便来一个页面来举例,就比如下面这个页面

我们通过f12来检查该网页,可以发现

既然HTML是这样一个层级结构的,那么我们当然可以通过这种结构来帮助我们快速获取到我们想要的元素。举个例子加入我想获取到当前我要的img控件,我们就可以通过下面的语句来实现

headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"}
response=requests.get("http://www.win4000.com/meinvtag26_1.html",headers=headers)
html=response.text
parse=parsel.Selector(html)
# //表示略过多个标签直到找到符合我要的标签为止
title=parse.xpath('//ul[@class="clearfix"]/a/img').getall()
123456

这样我们便获得了我们所有的img控件了
如果大家还是不会的话,谷歌浏览器已经帮我们一键完成
直接点击该控件右击,就能获得该控件的path了,但是记住这样我们只能获取单个控件,就不能获取整个img列表了。所以这种方法只适用于爬取单个元素。

2.遇到的 bug以及解决措施

2.1bug

因为之前一直是直接存储到我们的python项目下的文件夹中,一旦量大了之后就会很影响我的观感体验,所以我想着能不能自定义存储路径,之后就遇到了这个bug
首先先明确你要创建的是多级目录还是单级目录
如果是单级目录就使用:

os.mkdir(dir_name)
1

多级目录就使用:

os.makedirs(dir_name+'./'+dir_name1)
1

其次我们观察一下两个路径,看看他们有什么不同。
python项目下的文件路径是这样的:

python/pachong/.....
1

系统中的文件路径:

D:\cosplay\玛修·基列莱特cos美女性感车模写真
1

其实大家应该看出来了,主要就是 “/” 与 “\” 符号的差异,但是你要知道/无所谓,但是\在python中代表是转义字符的意思。所以字符串中出现它编译器是不会将它看成字符串的而是直接进行转义操作,所以我们必须提示编译器将它看成是字符

2.2最终的解决方案

第一种可以通过用"\\“来代替”\"

dir_name = 'D:\\aaa'+'\\'+'bbb'
if not os.path.exists(dir_name):os.makedirs(dir_name)
123

第二种可以使用"./"来代替除第一个\之后的所有\,这样也能实现创建
其次还要注意一点就是我们不能直接写 ‘D:\’ 这样编译器是会直接说我们是违法的,必须要在\后面添加一个字符串比如这样 'D:\cosplay’

"""创建文件夹名称"""
def createdir(dir_name1):dir_name=r'D:\cosplay'if not os.path.exists(dir_name+'./'+dir_name1):os.makedirs(dir_name+'./'+dir_name1)return dir_name+'./'+dir_name1
123456

3.效果展示

4. 源码

import time
import requests
import re
from bs4 import BeautifulSoup
import os
import parsel
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"}
findImgsrc=re.compile(r'<img .*? data-original="(.*?)"')def main():for i in range(5, 6):base_url = 'http://www.win4000.com/meinvtag26_{0}.html'.format(i)html=askurl(base_url)links=getlink(html)figurelinks(links)"""分析所有得到的网页信息"""
def figurelinks(links):for link in links:newhtml=askurl(link)gettitle(newhtml)dir_name=createdir(gettitle(newhtml))print(dir_name)print("开始爬取"+gettitle(newhtml))for i in range(1,int(getsum(newhtml))+1):time.sleep(1)newlink=link[0:34]+"_"+str(i)+link[34:40]secondhtml=askurl(newlink)data=getimg(secondhtml)# print(datas)download(data,dir_name)print(gettitle(newhtml)+"爬取结束")"""请求网页信息"""
def askurl(url):response=requests.get(url,headers=headers)html=response.text# print(html)return html"""获取页面标题"""
def gettitle(html):# print(datas)parse=parsel.Selector(html)title=parse.xpath('//div[@class="ptitle"]/h1/text()').getall()[0]# print(title)return title"""获取图片数量"""
def getsum(html):# print(datas)parse=parsel.Selector(html)sum=parse.xpath('//div[@class="ptitle"]/em/text()').getall()[0]# print(sum)return sum"""获取图片链接"""
def getimg(html):# print(datas)parse=parsel.Selector(html)link=parse.xpath('//div[@class="pic-meinv"]//img/@url').getall()[0]# print(link)return link"""获取页面链接"""
def getlink(html):# print(datas)parse=parsel.Selector(html)links=parse.xpath('//div[@class="Left_bar"]//ul/li/a/@href').getall()# print(links)return links"""创建文件夹名称"""
def createdir(dir_name1):dir_name=r'D:\cosplay'if not os.path.exists(dir_name+'./'+dir_name1):os.makedirs(dir_name+'./'+dir_name1)return dir_name+'./'+dir_name1"""保存图片"""
def download(data,dir_name):time.sleep(0.25)file_name=data.split("/")[-1]response=requests.get(data,headers=headers)with open(dir_name+"/"+file_name,'wb') as f:f.write(response.content)print(file_name+"下载成功")if __name__ == '__main__':print("主程序入口")main()

源码获取加群:1136192749

Python爬虫,自动下载cosplay小姐姐图片!相关推荐

  1. python爬虫 爬取清纯小姐姐图片

    文章目录 1 思路介绍 2 完整代码 2 代码介绍 2.1 获取网站 2.3 创建目录 2.4 找到首图的名称和地址 2.5 实现同一个人的翻页 2.6 实现每一位小姐姐图片的连接 2.7 爬取图片 ...

  2. python爬虫爬取美丽小姐姐图片美女壁纸

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  3. python血脉贲张的cosplay小姐姐图片

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  4. Pythom爬虫之图虫小姐姐图片的爬取:

    Pythom爬虫之图虫小姐姐图片的爬取: 导入库: import jsonpath import time import os 如果没有安装的话,可以通过: pip install 库 # 安装 我们 ...

  5. 干货福利!手把手教你用python获取上千张cosplay小姐姐的美照

    最近的一段时间里,小编喜欢上了CosPlay的展出,小姐姐们的CosPlay展真的是让我很是欣赏,于是,我回到家里就从网上来看展出,但是一个个网页查看太过繁琐-- 既然是玩Python,不如写个代码搞 ...

  6. 数据获取网络爬虫之--爬取小姐姐图片

    运行环境: python3+jupyter notebook 可直接运行 代码下载地址: https://download.csdn.net/download/weixin_44754046/1122 ...

  7. Python 爬虫自动下载OpenAI Key Papers

    Spinning Up是OpenAI开源的面向初学者的深度强化学习资料,其中列出了105篇深度强化学习领域非常经典的文章, 见 Spinning Up: 博主使用Python爬虫自动爬取了所有文章,而 ...

  8. Python爬取cosplay小姐姐图片

    不知道有没有小哥哥.小姐姐喜欢cosplay的,今天小编就分享一个关于爬取cosplay图片,emmmm,先来几张图活跃一下气氛! 咳咳咳-接下来咱们就进入正题! 首先,进入半次元,点击COS,热门推 ...

  9. python爬虫(自动下载图片)

    爬虫第一步下载第三方工具(requests包): win+R 输入cmd点击确定或回车 输入以下命令下载requests包: requests包是python爬虫常用的包 他的下载方式是 pip in ...

最新文章

  1. 提示框一段时间以后消失setTimeout
  2. rails 3 使用 cucumber 和rspec 進行 測試
  3. python上传excel文件_flask上传excel文件,无须存储,直接读取内容
  4. Springsecurity之FilterSecurityInterceptor
  5. PyTorch实战GANs
  6. 复现经典:《统计学习方法》​第17章 潜在语义分析
  7. 北京市计算机专修学院,北京计算机专修学院:三大热门专业
  8. 次世代游戏设计的相关介绍
  9. datatables ajax错误,ajax datatable - DataTables警告:table id = example - 无法重新初始化DataTable(示例代码)...
  10. NYOJ--456--邮票分你一半
  11. 互联网周刊eNet研究院:2018中国数字化转型最佳解决方案TOP100
  12. Codeforces Round #469(Div.1 D) (Div. 2 F)Curfew(贪心)
  13. 外网远程访问群晖NAS,内网穿透
  14. win10修改hosts小工具
  15. 正则中的()、[]、{}
  16. 计算机管理邮箱,用WindowsLiveMail一次管理多个邮箱
  17. Persistence Query
  18. 《CLR via C#》读书笔记---09 参数
  19. 2022年危险化学品经营单位主要负责人考试题模拟考试平台操作
  20. 怎么实现边下载边播放

热门文章

  1. 高阶常系数非齐次线性微分方程解法的步骤
  2. 音视频笔记:ffmpeg常用命令行
  3. 红帽集群套件RHCS(一)实战篇
  4. 关于kettle版本报错不是合法的kjb,ktr文件
  5. 建筑力学与结构【8】
  6. 标准解读全新工业自动化机器人—2022年海格里斯HEGERLS推出新型库宝箱式仓储机器人系统
  7. AndroidT(13) Log 系统 -- logd 服务的初始化(七)
  8. Oracle 闪回(flashback)数据库到指定时间点
  9. 防机器人验证机制之验证码
  10. gma 地理空间绘图:(1) 绘制简单的世界地图-3.设置地图框