爬虫爬取妹子图片(入门篇)

爬虫爬取妹子图片(入门篇)

python 爬虫如果不尝试一下爬取漂亮妹子的图片,那怎么能算得上真正的爬虫呢?
下面就一起来尝试一下吧。(绝对领域
观看一下网站首页(是不是很刺激啊,动手吧)

这里介绍使用scrapy框架进行爬取全网的图片,如果想要使用requests模块进行爬取也是可以的,毕竟这个网站的爬取还是非常的简单。

1.建立一个新的项目,选择一个文件夹在给文件夹中新建一个项目,打开终端(win+R 输入cmd ),切换到该文件的路径下,输入命令。

scrapy startproject projectname         # 项目名称按照自己的想法定

# 例如:
scrapy startproject juedui

2.打开pycharm ,切换到当前项目路径下,如下所示(file—-open—-之后选择自己的项目路径)
在这里插入图片描述
3.打开setting文件,设置setting文件中的配置信息。(大部分信息都是处于注释状态,需要用到的信息就打开)
(设置头部,打开中间件,机器人协议……)
设置头部信息:
在这里插入图片描述
修改机器人协议(只用于学习,暂时不遵循)(把注释去掉)
同时设置输出信息的权限,使得输出的信息的权限不低于WARNING(警告)(这样子输出的内容就能够少去很多不必要信息)(自行添加)
在这里插入图片描述
设置中间的权重
在这里插入图片描述

4.书写爬虫处理文件,以及发起请求(juedui文件下的spider文件下的爬虫文件)
全部代码如下:

# -*- coding: utf-8 -*-
import scrapy,json,parsel,re,requests,os
from ..items import JueduiItem
from fake_useragent import UserAgent
ua = UserAgent()
header = {
"User-Agent":ua.random}
class JdSpider(scrapy.Spider):
name = 'jd'
allowed_domains = ['jdlingyu.mobi']
start_urls = ['https://www.jdlingyu.mobi']
# 主页面的分析,提取列表页面url
def parse(self, response):
url_lsit = response.xpath('//div[@class="grid-bor"]//div[@class="pos-r cart-list"]')
print(len(url_lsit))
for url in url_lsit:
item = JueduiItem()
item['pageTitle'] = url.xpath('.//h2[@class="entry-title"]/a/text()').extract_first()
item['pageUrl'] = url.xpath('.//h2[@class="entry-title"]/a/@href').extract_first()
yield scrapy.Request(
item['pageUrl'],
callback=self.page_parse,
meta={
"item":item}
)
page = response.xpath('//div[@id="primary-home"]/@data-pages').extract_first()
if page == None:                            # 获取该URL下的总页数
page = response.xpath('//page-nav').extract_first()
mold = re.findall('nav-type="(.*?)"',page)[0]
page = re.findall('pages="(.*?)"',page)[0]
print("page:",page,"type:",mold)
for i in range(2,3):              # 逐个发起请求 int(page)+1
yield scrapy.FormRequest(
"https://www.jdlingyu.mobi/wp-admin/admin-ajax.php?action=zrz_load_more_posts",
formdata={
"type":mold,"paged":str(i)},
callback=self.page_parse1,
)
# 对使用post请求发送得到的页面进行同样的分析
def page_parse1(self,response):
res = json.loads(response.body.decode())
img = res['msg']
html = parsel.Selector(img)
url_lsit = html.xpath('//h2')
for url in url_lsit:
item = JueduiItem()
item['pageTitle'] = url.xpath('.//a/text()').extract_first()
item['pageUrl'] = url.xpath('.//a/@href').extract_first()
yield scrapy.Request(
item['pageUrl'],
callback=self.page_parse,
meta={
'item':item}
)
# 提取文章中的图片URL,以及下载图片
def page_parse(self,response):
item = response.meta['item']
item['imgUrl'] = response.xpath('//div[@id="content-innerText"]//img/@src').extract()
print(item['pageTitle'])
# print(item['imgUrl']) # 图片URL
for url in item['imgUrl']:
res = requests.get(url,headers=header)
# 把图片保存到本地硬盘中,文件路径按照自己电脑来写
if not os.path.exists(r"F:\相片\绝对领域/"+item['pageTitle']):   # 这个地址自己设置自己的本地地址
os.makedirs(r"F:\相片\绝对领域/"+item['pageTitle'])
with open(r"F:\相片\绝对领域/"+item['pageTitle']+'/'+url.split('/')[-1],"wb") as fp:
fp.write(res.content)

这样子就把所有的图片保存到了硬盘文件中了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115125.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • mac用鼠标滚轮滚动方向相反_macbook触控板怎么滚动

    mac用鼠标滚轮滚动方向相反_macbook触控板怎么滚动iPad用习惯了以后,在Mac上也喜欢把触控板的双指滑动滚动方向设成“自然”模式,但是鼠标滚轮的滚动方向也随之反过来了。估计很多苹果电脑用户和我一样希望触控板和鼠标滚动方向相反……你可以试

  • vs2013安装失败解决办法_个人总结及解决方案

    vs2013安装失败解决办法_个人总结及解决方案今晚上,在机器上安装vs2008时,连续好几次都失败,开始以为是vs2005(之前装的2005)的原因,后来把2005全卸载了,还是安装失败,在错误日志里总是说版本冲突,经过网上前人经验的指点问题得到了解决,现将前辈的经验收藏分享,以造福更多的人我就开始看我indows系统的日志,没有任何红色提示,但我始终不相信我的安装文档有问题,因为同事他们也是用的这个版本(vs2008team),我更…

  • 正版office2007标准版

    正版office2007标准版正版office2007标准版正版office2007标准版,供应2007office标准版,正版office2007询价,正版office2007价格 胡辉:13590176235深圳office2007 中文家庭与学生版彩包:深圳office200

  • 浏览器缓存机制浅析

    浏览器缓存机制浅析

  • 电驴(eMule)下载_电驴链接怎么用

    电驴(eMule)下载_电驴链接怎么用先保证服务器连接。在电骡服务器界面右边的“从URL更新server.met”字样下边的小框里输入“http://upd.emule-security.org/server.met”,然后点击“更新”,下载新的服务器列表即可。Kad连接http://upd.emule-security.org/nodes.dathttp://kademlia.ru/download/nodes.dath…

    2022年10月22日
  • 多线程死锁的产生以及如何避免死锁

    多线程死锁的产生以及如何避免死锁一、死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。下面我们通过一些实例来说明死锁现象。先看生活中的一个实例,在一条河上有一座桥,桥面很窄,只能容纳一辆汽车通行。如果有两辆汽车分别从桥的左右两端驶上该桥,则会出现

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号