python_爬校花

如何用python爬取校花图片并保存到本地来?

  1. 获取什么数据?

    校花名字  name

    校花所在学校 school

    校花图片的url   img_ulr

  2.如何获取?

    打开网页http://www.xiaohuar.com/hua/ ,打开开发工具,研究每一张图片对应的html,找规律

    通过python 的scrapy框架进行批量爬取

环境声明:

  python 3.50

  scrapy 库

出现了哪些问题?

  1. 如何去除重复的url?

    通过对获取的url 进行md5,进行去重

  2. 如何该网站上所有的校花信息?

    先获取网页上所有的a标签,通过递归去取其他内容

  3. 如何内容永久化?

    写入文件,数据库等,该爬校花图片程序,我选择写入文件保存

如何创建与逻辑处理?

  1. 新建爬虫项目

    scrapy startproject pa_girls  (通过命令行)

  2. spiders 目录下,建立 一个叫 、school_girls.py文件

    在school_girls.py文件中写入:

#!/usr/bin/python3

import scrapy
from scrapy.selector import HtmlXPathSelector
import hashlib
# 把item模块添加到环境变量
from items import Pa1Item

# # 最终获取信息列表
# school_girl = []

# 获得总url,目的去重
all_urls = {}

class SchoolGirls(scrapy.Spider):
    name = ‘school_girls‘
    # 初始url,依次
    start_urls = [
        ‘http://www.xiaohuar.com/hua/‘,
    ]

    def parse(self, response):
        # 爬虫主体
        try:
            # 找标签
            hxs = HtmlXPathSelector(response)
            girls = Pa1Item()
            # 获取标签中指定数据
            school = hxs.select(‘//div[@class="img"]/div[@class="btns"]/a/text()‘).extract()
            name = hxs.select(‘//div[@class="img"]/span[@class="price"]/text()‘).extract()
            img_url = hxs.select(‘//div[@class="img"]/a/img/@src‘).extract()
            if school and name and img_url:
                girls[‘school‘] = hxs.select(‘//div[@class="img"]/div[@class="btns"]/a/text()‘).extract()
                girls[‘name‘] = hxs.select(‘//div[@class="img"]/span[@class="price"]/text()‘).extract()
                girls[‘img_url‘] = hxs.select(‘//div[@class="img"]/a/img/@src‘).extract()
                yield girls
            else:
                pass
                #
            # 获取页面的所有连接
            page_urls = hxs.select(‘//a/@href‘).extract()
            page_urls.append(‘http://www.xiaohuar.com/hua/‘)
            # print(page_urls)

            # 进行url去重
            url_list = {}
            for url in page_urls:
                if url.startswith(‘JavaScript‘) or url.startswith(‘#‘) or not url:
                    continue
                else:
                    m = hashlib.md5()
                    m.update(bytes(url, encoding=‘utf-8‘))
                    img_id = m.hexdigest()
                    # 判断是否重复url,重复就不需要再次访问
                    if img_id in all_urls:
                        continue
                    else:
                        all_urls[img_id] = url
                        url_list[img_id] = url

            # 递归查找该页面所有url
            for url in url_list.values():
                yield scrapy.Request(url=url, callback=self.parse)
        except Exception as e:
            print(e)

  3. 在 items.py文件中写入

import scrapy

class Pa1Item(scrapy.Item):
    name = scrapy.Field()
    school = scrapy.Field()
    img_url = scrapy.Field()

  4. 在pipelines.py文件中写入

import os
import requests

class GirlsMessage(object):
    ‘‘‘获取有效数据‘‘‘
    def process_item(self, item, spider):
        for i in range(len(item[‘name‘])):
            if item[‘name‘][i].strip() and item[‘school‘][i].strip() and item[‘img_url‘][i].strip():

                # 把信息写入文件
                message_girls = item[‘name‘][i] + ‘_‘ + item[‘school‘][i] + ‘:‘                                 + ‘http://www.xiaohuar.com/‘ + item[‘img_url‘][i]
                with open(‘E:\scrapy_new\img\message_girls.text‘, ‘a+‘, encoding=‘utf-8‘) as f_girls:
                    f_girls.write(message_girls)

                # 下载图片
                img_path = os.path.join(‘E:\scrapy_new\img‘, item[‘name‘][i] +‘_‘ + item[‘school‘][i] +‘.jpg‘)
                img_url = ‘http://www.xiaohuar.com/‘ + item[‘img_url‘][i]
                try:
                    img_date = requests.get(img_url).content
                    with open(img_path, ‘bw‘,) as f_img:
                        f_img.write(img_date)
                        f_img.flush()
                except Exception as e:
                    print(e)
        return item

  5. 在setting文件中添加

# 设置爬取深度
DEPTH_LIMIT = 1

# 激活pipelines中类
ITEM_PIPELINES = {
    ‘pa_1.pipelines.GirlsMessage‘: 200,
}

可能会出现哪些问题?

  1. items模块导入不了,如何解决

    在spiders目录下的__init__.py文件中加入:

import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

 如何启动项目?

  scrapy crawl school_girls (需要在项目下,spiders目录下敲入命令)

时间: 2024-10-05 04:26:06

python_爬校花的相关文章

分手后,小伙怒用Python爬取上万空姐照片,赢取校花选举大赛!

首先展示下Python爬取到的成果:   我做什么都要争第一,这次的校花投票选举大赛也不例外,虽然我是个男的......但是我看到了前女友竟然已经有三百多票排到第三名了,我怎么能眼睁睁的看着她优秀呢?我必须要让她排到前三除外,·不行,必须是前十开外!我想到一个办法就是用Python开发一个百度爬虫,爬取百度所有美女的照片,然后申请多个账号进行参赛.   其实比起Python爬取图片外,我对微信上的投票小程序也有所研究,已经有了Python实现微信上刷票脚本的思路,这个我下次再分享大家,这次先学习

爬虫----爬取校花网视频

import requests import re import time import hashlib def get_page(url): print('GET %s' %url) try: response=requests.get(url) if response.status_code == 200: return response.content except Exception: pass def parse_index(res): obj=re.compile('class="i

校花网爬取

1.堆糖校花网API: 获取数据的api: https://www.duitang.com/napi/blog/list/by_search/?kw=%E6%A0%A1%E8%8A%B1&start=0&limt=1000 图片路径 "path": https://b-ssl.duitang.com/uploads/item/201509/18/20150918195615_JfdKm.jpeg 2.简要介绍爬虫: (1)从技术层面来说就是 通过程序模拟浏览器请求站点的

轻松入门Python爬虫,三个爬虫版本,带你以各种方式爬取校花网

爬虫是什么? 如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛, 沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序: 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片.视频) 爬到本地,进而提取自己需要的数据,存放起来使用: 为了帮助大家更轻松的学好Python开发,爬虫技术,Python数据分析等相关知识,给大家分享一套Python学习资料,小编推荐

爬取校花网大学校花代码

import re import os import requests count = 0 for i in range(10): url = f"http://www.xiaohuar.com/list-1-{count}.html" response = requests.get(url) data = response.text result_list = re.findall('src="(.*?)" /></a>',data) # pri

校花的贴身高手 第一卷 神奇的任务 第045章 呲花哥

第045章 呲花哥 与此同时,在松山市市郊的一座废弃仓库门口,停着一辆黑色的现代商务面包车,只不过牌照已经被人摘了下去. “我靠,这群警察疯了吧?不就抢了一百多万么?至于这样么?”秃头很是不爽的吐了一口浓痰在地上. “是啊,头儿,这样下去也不是事儿啊,咱们不是被困在这里了么?”马六也是很烦躁:“TM的,真衰!” “行了,别抱怨了,我这等着呲花哥的电话呢!”秃头不耐的摆了摆手. 电话铃声响起,秃头连忙的接起了电话,然后有些谄媚的道:“是呲花哥么?我是秃头啊!” “你了个逼的搞什么?”电话那边传来了

校花的贴身高手 第一卷 神奇的任务 第046章 和教务主任很熟

第046章 和教务主任很熟 “哇,好香呀!太好吃了!”边吃陈雨舒边评论着. 有什么大不了,反正昨天也吃了一碗,不差今天这一碗了!楚梦瑶一咬牙,向餐厅的方向走去. 楚梦瑶的行为完全被林逸看在眼里,林逸微微一笑,这个楚梦瑶还挺有意思. “梦瑶,快来吃面了!”林逸为了让楚梦瑶更加的有动力,于是鼓励了一句. “谢谢……”楚梦瑶蚊子一样的声音,让林逸和陈雨舒都有些错愕,这还是楚梦瑶么? 坐在餐桌上,拿起了筷子,看着面前这碗香喷喷的面条,楚梦瑶有一种想哭的感觉,自己是不是对林逸太过分了一点儿呢?其实……他还

校花的贴身高手 第一卷 神奇的任务 第050章 一个篮球引发的血案(上)

第050章 一个篮球引发的血案(上) “嗷——”邹若明痛苦的嚎叫了一声,他的手腕已经被砸的脱臼了,篮球穿过了他的双手,直接向他的脸上拍去! “砰”,又是一声巨响,邹若明这次连嚎叫都没来得及嚎叫,就鼻孔飞血的倒在了地上,鲜血在空中划出了一道彩虹,很有冷酷的美感. 邹若明被直接拍的昏死了过去,一旁和他一起玩篮球的走狗们也都傻了眼了,这还是篮球么?简直就是炮弹了! 再看那个始作俑者,林逸很是没事儿人似的,拍了拍手上的灰尘,向教学楼继续走去.林逸心里暗暗不屑,和我装犊子呢?这次算是轻的了,要是还有下次,

校花的贴身高手 第一卷 神奇的任务 第048章 暧昧一刻

第048章 暧昧一刻 今天早上来上班,关馨却听到整个外科的医生和护士都在谈论一个叫做林逸的男人,本来关馨也没当回事儿,还以为是什么八卦的消息,不过细听之下,却惊奇的发现,大家讨论的却是昨天的银行劫案! 作为当事人的关馨自然最有发言权了,当关馨说到自己前面的小伙子主动站起来要当人质的时候,大家顿时一片哗然!原来这一切都是真的,昨天那个小伙子真的是个英雄! 虽然之前孙为民和大家说过了,但是因为警方并没有披露事情的细节,所以很多人还以为林逸在和孙为民吹牛,现在,有了关馨的亲眼所见,那林逸还真的是个小英