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

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

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)


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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • springboot和springframework以及jdk版本的对应关系

    springboot和springframework以及jdk版本的对应关系Springboot版本 SpringFramework jdk版本 maven版本 1.2.0版本之前 6 3.0 1.2.0 4.1.3+ 6 3.2+ 1.2.1 4.1.3+ 7 3.2+ 1.2.3 4.1.5+ 7 3.2+ 1.3.4 4.2.6+ 7 3.2+ 1.3.6 4.2.7+ 7 3.2+ 1.3.7 4.2.

    2022年5月16日
    258
  • Python中strip()函数

    Python中strip()函数在pythonAPI中这样解释strip()函数:声明:s为字符串,rm为要删除的字符序列s.strip(rm)删除s字符串中开头、结尾处,位于rm删除序列的字符s.lstrip(rm)删除s

    2022年7月5日
    23
  • 单片机八路抢答器计设计_基于单片机的三路抢答器设计

    单片机八路抢答器计设计_基于单片机的三路抢答器设计详细代码讨论加我QQ:1271370903一、设计任务与要求一、题目:8路比赛抢答器二、基本要求:利用8051单片机中断系统,制作一个有8个按键的比赛抢答器。在有人按键时进行对应选手显示。三、设计任务:1.设计硬件电路,画出电路原理图;2.画出程序流程图;3.编制程序,写出源程序代码;4.写出5000字的详细说明书,要求字迹工整,原理叙述正确,会计算主要元器件的一些参数,并选择元器件;5.个人总结。四、参考资料:1.教材;2.单片机实验指导书》**二、方案设计**方案:该系

    2022年10月20日
    4
  • java小程序实例大全_12个用Java编写基础小程序&经典案例(收藏)

    java小程序实例大全_12个用Java编写基础小程序&经典案例(收藏)原标题:12个用Java编写基础小程序&经典案例(收藏)如果是刚接触或者刚学习java,练习一些基础的算法还是必须的,可以提升思维和语法的使用。1、输出两个int数中的最大值importjava.util.Scanner;publicclassdemo{publicstaticvoidmain(String[]args){Scannerscanner=newSc…

    2022年7月7日
    35
  • HTML制作简单的页面[通俗易懂]

    HTML制作简单的页面[通俗易懂]一.HTML页面制作代码部分<html> <head> <metacharset=”utf-8″> <title>MusicLoginForm</title> <!–css代码声明–> <styletype=”text/css”> //div的设置 #showdiv{ width:450px; height:530px; border:solid2px

    2022年9月2日
    5
  • Oracle number类型详解

    Oracle number类型详解Oraclenumber类型详解简介基本说明容易出错情况Number与MySQL数据类型简介Oracle的number类型比较复杂,很多限制,但是掌握一点小技巧就能轻松搞定。基本说明number(precision,scale)precision表示数字中的有效位,从左边第一个不为0的数算起,小数点和负号不计入有效位数precision的取值范围是[1,38]precision默认值为38,number等价于number(38)scale大于0,表示数字精确到小数点右边的位数,numb

    2022年7月24日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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