Python3 大型网络爬虫实战 003 — scrapy 大型静态图片网站爬虫项目实战 — 实战:爬取 169美女图片网 高清图片

Python进阶--爬取美女图片壁纸(基于回车桌面网的爬虫程序) 爬取美女图片,详细解释每一个步骤,满足各种下载需求,给出所有源代码,小白也能看懂!!! 阅读详情

原博文链接:http://www.aobosir.com/blog/2016/12/26/python3-large-web-crawler-169bb-com-HD-beautiful-pictures/


开发环境

  • Python第三方库:lxml、Twisted、pywin32、scrapy
  • Python 版本:python-3.5.0-amd64
  • PyCharm软件版本:pycharm-professional-2016.1.4
  • 电脑系统:Windows 10 64位

如果你还没有搭建好开发环境,请到这篇博客。


  • 本篇博客源代码GitHub里:这里。

这一篇博客的目的是爬取 169美女图片网 里面的所有的“西洋美女”的高清图片。

Alt text


爬虫程序设计思路:

1 . 先得到 http://www.169bb.com/xiyangmeinv/ 页面里面所有的照片后面对应的URL网页链接(如)。

2 . 接着在得到的URL链接网页里面得到里面所有高清图片的下载地址,进行下载。

3 . 得到所有 “西洋美女” 网页的页数。

Alt text


观察网页 和 网页源代码

1 . 打开 169美女图片网:http://www.169bb.com/

2 . 我们的目的是爬取这个站点里面所有 “西洋美女” 的高清图片。所以点击进入“西洋美女” 标签里。(http://www.169bb.com/xiyangmeinv/)

Alt text

3 . 观察这个页面,在页面最下面,显示了,当前一共311页。

Alt text

4 . 我们再来观察每页的网址有什么共同点,我们发现:第2页的网站是:http://www.169bb.com/xiyangmeinv/list_4_2.html;第3页的网址是:http://www.169bb.com/xiyangmeinv/list_4_3.html;而第1页的网站是:http://www.169bb.com/xiyangmeinv/list_4_1.html

这样每页的网址是有规律的,按照这个规律,我们可以推测出“西洋美女” 的第120页的网址就应该是:http://www.169bb.com/xiyangmeinv/list_4_120.html。事实的确是这样的。好。

5 . 现在,我们随便点击一个图片,进去看看这个美女的高清图片集。

里面都是高清的图片,并且有很多,并且,不止一页。就我随机点击的这个美女的链接就有11页,并且一页里面有5张左右的高清图片。

Alt text

6 . 并且它的每页的网址也是有规律的。

第2页是:http://www.169bb.com/xiyangmeinv/2016/1117/37333_2.html
第3页是:http://www.169bb.com/xiyangmeinv/2016/1117/37333_3.html
第1页是:http://www.169bb.com/xiyangmeinv/2016/1117/37333.html
…

但是有的美女的网址里只有一页,比如这个:http://www.169bb.com/xiyangmeinv/2016/0103/5974.html


好了,现在这个目标网页,我们已经分析完了。现在就可以编程。


写程序

源代码GitHub里:这里。

接下来我们为大家讲解大型图片爬虫项目编写实战。

Step 1 .

创建一个Scrapy爬虫项目:

scrapy startproject secondDemo

Alt text

创建一个scrapy爬虫文件,我们就在这个文件里面写爬取目标网站里面图片的爬虫程序。

cd secondDemo
scrapy genspider -t basic pic_169bb 169bb.com

Alt text


用 PyCharm 软件打开刚刚创建的 secondDemo 工程。

Alt text

Step 2 . 在 items.py 文件里面的SeconddemoItem()函数里面创建一个对象,这个对象在其他的文件里面会使用到。

Alt text

Step 3 . 现在开始爬虫的编写。进入pic_169bb.py文件。

爬虫(pic_169bb.py文件)会自动的先爬首页(http://169bb.com/),爬完首页之后,会自动的进入parse()回调函数。

这个回调函数中,我们需要写些东西。

先获取所有栏目的名字和地址。

Alt text

查看源代码:

Alt text

在pic_169bb.py 文件中的 parse()回调函数中添加下面的代码:

        urldata = response.xpath("/html/body/div[@class='header']/div[@class='hd_nav']/div[@class='w1000']//a/@href").extract()
        print(urldata)

Alt text

现在运行一下,输出:

Alt text


继续进行下一次的爬取:

先导入一个模块

from scrapy.http import Request

爬取子栏目的第一页,即西洋美女网址的第一页。

        xiyangurldata = urldata[4]  # 获取西洋美女首页网址
        print(xiyangurldata)
        yield Request(url=xiyangurldata, callback=self.next)

    def next(self, response):
        pass

Alt text

    def next(self, response):
        page_title_list = response.xpath("/html/body//div[@class='w1000 box03']/ul[@class='product01']//li/a/@alt").extract()
        print(page_title_list)
        page_url_list = response.xpath("/html/body//div[@class='w1000 box03']/ul[@class='product01']//li/a/@href").extract()
        print(page_url_list)
        pass

Alt text

运行输出一下:

Alt text


Alt text

        page_num = response.xpath("//span[@class='pageinfo']//strong/text()").extract()[0] # 得到西洋美女总页数
        print(page_num)
        print(response.url)
        for i in range(1, int(page_num)+1):
            page_url = response.url + 'list_4_'+ str(i) + '.html' # 得到西洋美女每一个页面的网址
            print(page_url)
        pass

Alt text

运行输出一下:

Alt text

Alt text


继续下一次:

        for i in range(1, int(page_num)+1):
            page_url = response.url + 'list_4_'+ str(i) + '.html' # 得到西洋美女每一个页面的网址
            print(page_url)
            yield Request(url=page_url, callback=self.next2)
        pass

    def next2(self, response):
        pass

Alt text


现在获取每一个美女的网页网址:

    def next2(self, response):
        page_title_list = response.xpath("/html/body//div[@class='w1000 box03']/ul[@class='product01']//li/a/@alt").extract()
        # print(page_title_list)
        page_url_list = response.xpath("/html/body//div[@class='w1000 box03']/ul[@class='product01']//li/a/@href").extract()
        # print(page_url_list)

        for i in range(0, len(page_url_list)):
            gril_page_url = page_url_list[i]
            print(gril_page_url)
            yield Request(url=gril_page_url, callback=self.next3)
        pass

    def next3(self, response):
        pass

Alt text

运行程序看看:

Alt text


next3() 这个回调函数的功能就是得到一个美女网页里面的所有的页面的网址。

有的美女的网页里面只有一个页面,有的美女的网页里面有多个页面:

Alt text

Alt text

可以统一解决。


测试:

Alt text

Alt text

Alt text

输出:

Alt text


Alt text

Alt text

同样的回调函数

输出:

Alt text


所以,我们可以这样写程序:

当得到的页码为-3,说明这个美女的网页是单页的;如果得到的页码数不等于-3,说明这个美女的网页是多也的。

测试程序:

对于多页面的美女网页网址

Alt text

Alt text

运行输出:

D:\WorkSpace\python_ws\python-large-web-crawler\secondDemo>scrapy crawl pic_169bb --nolog
10
http://www.169bb.com/xiyangmeinv/2016/0717/36463.html
http://www.169bb.com/xiyangmeinv/2016/0717/36463_5.html
http://www.169bb.com/xiyangmeinv/2016/0717/36463_10.html
http://www.169bb.com/xiyangmeinv/2016/0717/36463_9.html
http://www.169bb.com/xiyangmeinv/2016/0717/36463_6.html
http://www.169bb.com/xiyangmeinv/2016/0717/36463_8.html
http://www.169bb.com/xiyangmeinv/2016/0717/36463_7.html
http://www.169bb.com/xiyangmeinv/2016/0717/36463_3.html
http://www.169bb.com/xiyangmeinv/2016/0717/36463_4.html
http://www.169bb.com/xiyangmeinv/2016/0717/36463_2.html

D:\WorkSpace\python_ws\python-large-web-crawler\secondDemo>

对于单页面的美女网页:

    def parse(self, response):
        ...
        yield Request(url='http://www.169bb.com/xiyangmeinv/2016/0103/2268.html', callback=self.demo)

回调函输一样。

运行输出:

D:\WorkSpace\python_ws\python-large-web-crawler\secondDemo>scrapy crawl pic_169bb --nolog
-3
http://www.169bb.com/xiyangmeinv/2016/0103/2268.html

D:\WorkSpace\python_ws\python-large-web-crawler\secondDemo>

成功。

所以现在的爬虫代码应该是这样的:

# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request

class Pic169bbSpider(scrapy.Spider):
    name = "pic_169bb"
    allowed_domains = ["169bb.com"]
    start_urls = ['http://169bb.com/']

    def parse(self, response):
        title_list = response.xpath("/html/body/div[@class='header']/div[@class='hd_nav']/div[@class='w1000']//a/text()").extract()
        # print(title_list)
        urldata = response.xpath("/html/body/div[@class='header']/div[@class='hd_nav']/div[@class='w1000']//a/@href").extract()
        #print(urldata)
        xiyang_title = title_list[4] # 获取西洋美女标签的文本内容
        xiyang_urldata = urldata[4]  # 获取西洋美女首页网址
        # print(xiyang_title, xiyang_urldata)
        yield Request(url=xiyang_urldata, callback=self.next)
        # yield Request(url='http://www.169bb.com/xiyangmeinv/2016/0717/36463.html', callback=self.demo)
        # yield Request(url='http://www.169bb.com/xiyangmeinv/2016/0103/2268.html', callback=self.demo)

    def next(self, response):
        page_num_str = response.xpath("//span[@class='pageinfo']//strong/text()").extract()[0] # 得到西洋美女总页数
        # print(page_num_str)
        # print(response.url)
        for i in range(1, int(page_num_str)+1):
            page_url = response.url + 'list_4_'+ str(i) + '.html' # 得到西洋美女每一个页面的网址
            # print(page_url)
            yield Request(url=page_url, callback=self.next2)
        pass

    def next2(self, response):
        page_title_list = response.xpath("/html/body//div[@class='w1000 box03']/ul[@class='product01']//li/a/@alt").extract()
        # print(page_title_list)
        page_url_list = response.xpath("/html/body//div[@class='w1000 box03']/ul[@class='product01']//li/a/@href").extract()
        # print(page_url_list)

        for i in range(0, len(page_url_list)):
            gril_page_url = page_url_list[i] # 得到西洋美女页面里面每一个美女的网页网址
            print(gril_page_url)
            yield Request(url=gril_page_url, callback=self.next3)
        pass

    def next3(self, response):
        rela_pages_list = response.xpath("//div[@class='dede_pages']/ul//li/a/text()").extract()
        pages_num = len(rela_pages_list) - 3
        # print(pages_num)
        self.getPic(response)
        if pages_num == -3:
            # pages_num = 1
            return
        for i in range(2, pages_num+1):
            girl_page_url = response.url.replace('.html', '_') + str(i) + '.html'
            # print(girl_page_url)
            yield Request(url=girl_page_url, callback=self.next4)
        pass

    # def demo(self, response):
    # #     rela_pages_list = response.xpath("//div[@class='dede_pages']/ul//li/a/text()").extract()
    # #     pages_num = len(rela_pages_list)-3
    # #     print(pages_num)
    # #     pass
    #     rela_pages_list = response.xpath("//div[@class='dede_pages']/ul//li/a/text()").extract()
    #     pages_num = len(rela_pages_list) - 3
    #     # print(pages_num)
    #     self.getPic(response)
    #     if pages_num == -3:
    #         # pages_num = 1
    #         return
    #     for i in range(2, pages_num+1):
    #         girl_page_url = response.url.replace('.html', '_') + str(i) + '.html'
    #         # print(girl_page_url)
    #         yield Request(url=girl_page_url, callback=self.next4)
    #     pass

    def next4(self, response):
        self.getPic(response)
        pass

    def getPic(self, response):
        print(response.url)
        pass

现在,我们需要在getPic() 函数中获取每一个美女网页的每一个页面里面的所有高清图片。

Alt text

    def getPic(self, response):
        # print(response.url)
        item = SeconddemoItem()
        item['url'] = response.xpath("//div[@class='big-pic']/div[@class='big_img']//p/img/@src").extract()
        print(item['url'])
        pass

测试运行:

测试多页的美女网页:

先将parse()函数的最后一行改为:yield Request(url='http://www.169bb.com/xiyangmeinv/2016/0717/36463.html', callback=self.demo)

Alt text

测试单页的美女网页:

将parse()函数的最后一行改为:yield Request(url='http://www.169bb.com/xiyangmeinv/2016/0103/2268.html', callback=self.demo)

Alt text

成功。


下载高清图片

OK,现在我们就已经得到了所有西洋美女的所有高清图片的下载地址,我们在piplines.py 文件中使用它们。

删除了next4()回调函数。在demo()回调函数里面调用的都是getPic()回调函数。

    def demo(self, response):
    #     rela_pages_list = response.xpath("//div[@class='dede_pages']/ul//li/a/text()").extract()
    #     pages_num = len(rela_pages_list)-3
    #     print(pages_num)
    #     pass
        rela_pages_list = response.xpath("//div[@class='dede_pages']/ul//li/a/text()").extract()
        pages_num = len(rela_pages_list) - 3
        # print(pages_num)
        self.getPic(response)
        if pages_num == -3:
            # pages_num = 1
            return
        for i in range(2, pages_num+1):
            girl_page_url = response.url.replace('.html', '_') + str(i) + '.html'
            # print(girl_page_url)
            yield Request(url=girl_page_url, callback=self.getPic)
        pass

    # error : yield 经过了一个中间函数,运行就有问题。我现在还不知道为什么
    # def next4(self, response):
    #     self.getPic(response)
    #     pass

并将getPic()函数里面的item写到生成器里面:

    def getPic(self, response):
        # print(response.url)
        item = SeconddemoItem()
        item['url'] = response.xpath("//div[@class='big-pic']/div[@class='big_img']//p/img/@src").extract()
        # print(item['url'])
        # pass
        yield item

测试:

测试单页的美女网页:

将parse()函数的最后一行改为:yield Request(url='http://www.169bb.com/xiyangmeinv/2016/0103/2268.html', callback=self.getPic)

成功。

测试多页的美女网页:

先将parse()函数的最后一行改为:yield Request(url='http://www.169bb.com/xiyangmeinv/2016/0717/36463.html', callback=self.demo)

Alt text

也算算成功,因为有重复的文件名,所以自动替换,所以这里需要做修改。

我们可以使用美女图片网址里面的数字作为图片文件名的固定前缀来给图片命名,使用正则表达式获取网址的数字。


在 pipelines.py 文件 中的 process_item() 函数中使用正则表达式得到图片下载网址的数字:

import re
import urllib.request

class SeconddemoPipeline(object):
    def process_item(self, item, spider):
        # print(len(item['url']))
        for i in range(0, len(item['url'])):
            this_url = item['url'][i]
            id = re.findall('http://724.169pp.net/169mm/(.*?).jpg', this_url)[0]
            id = id.replace('/', '_')
            print(id)
            # file = 'D:/WorkSpace/python_ws/python-large-web-crawler/xiyangmeinv/' + str(i) + '.jpg'
            # print('Downloading :' , file)
            # urllib.request.urlretrieve(this_url, filename=file)
            # print('Final Download :' , file)
        return item

Alt text

要想使用 pipelines.py 文件 中的 SeconddemoPipeline 类,需要在 settings.py 文件里面设置 ITEM_PIPELINES 项:

ITEM_PIPELINES = {
   'secondDemo.pipelines.SeconddemoPipeline': 300,
}

Alt text

这里,我有一件事情不懂,关于正则表达式的: 网址里面的. 也是正则表达式中的工具字符,也是数据中中的内容,那么正则表达式是如何分辨它在这里是功能字符还是内容字符?

在pic_169bb.py 文件的demo() 回调函数中,这样写才能获取到美女网页的第一页的图片地址:

        # error
        # self.getPic(response)
        # succes 为啥将下面的代码用self.getPic(response)的形式不能正常的获取到,而使用下面的代码却能获取到?
        item = SeconddemoItem()
        item['url'] = response.xpath("//div[@class='big-pic']/div[@class='big_img']//p/img/@src").extract()
        # print(item['url'])
        # pass
        yield item

Alt text

运行程序试试:

测试单页的美女网页:

将parse()函数的最后一行改为:yield Request(url='http://www.169bb.com/xiyangmeinv/2016/0103/2268.html', callback=self.getPic)

Alt text

成功。

测试多页的美女网页:

先将parse()函数的最后一行改为:yield Request(url='http://www.169bb.com/xiyangmeinv/2016/0717/36463.html', callback=self.demo)

Alt text

都成功。


先测试下载图片:

将 pipelines.py 文件 中的 SeconddemoPipeline 类的process_item() 函数里面,添加代码:

    def process_item(self, item, spider):
        # print(len(item['url']))
        for i in range(0, len(item['url'])):
            this_url = item['url'][i]
            id = re.findall('http://724.169pp.net/169mm/(.*?).jpg', this_url)[0]
            id = id.replace('/', '_')
            # print(id)
            file = 'D:/WorkSpace/python_ws/python-large-web-crawler/xiyangmeinv/' + id + '.jpg'
            print('Downloading :' , file)
            urllib.request.urlretrieve(this_url, filename=file)
            print('Final Download :' , file)
        return item

Alt text

运行程序,没有毛病:(除了下载速度有点慢)

Alt text


下载 169美女图片网 的所有西洋美女的图片

在 pic_169bb.py文件里, 将parse()函数的最后一行改为:yield Request(url=xiyang_urldata, callback=self.next)

Alt text

将 demo() 函数里面的所有代码复制一份到 next3()函数里:

Alt text

现在,运行程序:(最终的程序)

Alt text

Alt text

成功!


防反爬技术

Step 4 . 不遵循 robots.txt 协议。

将 settings.py 文件里面的 ROBOTSTXT_OBEY 项设置为:False

Alt text


Step 6 . 模仿浏览器

请先查看这篇博客:http://blog.youkuaiyun.com/github_35160620/article/details/52489709 里面是:六 . 设置 用户代理(user_agent)。

将 settings.py 文件里面的 USER_AGENT 项设置为:浏览器的用户代理信息。

USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0'

Step 7 . 禁止缓存

将 settings.py 文件里面的 COOKIES_ENABLED 项设置为:False。

COOKIES_ENABLED = False

搞定


需要升级的地方:(2016-11-27 19:34:34)

  1. 在易错的代码段加上异常检测程序
  2. 在下载图片的代码加上:超时异常检测程序
  3. 记录成功下载的、超时失败下载的、链接失败下载的 信息
  4. 添加断点续下功能。

请访问:http://www.aobosir.com/

帅哥美女搜索利器-珍爱网版 软件简介: 设定好你要搜索的条件,例如 帅哥/美女 然后点搜索 傻瓜化操作,让你更容易找到你心目中的他/她! 立即下载

相关推荐

不错的美女图片网站程序模板

CMS的 感觉还不错 一直在用

中国十大女性网站排行榜

                                                        中国十大女性网站排行榜  第一位:瑞丽女性网(www.rayli.com.cn)   世界经理人数据:http://data.icxo.com瑞丽女性网是瑞丽品牌在互联网平台上的成功拓展,现已成为服务于中国大陆及全球华人社群的领先在线媒体与增值资讯提供商。她以服务女性

lisky119的专栏 27万+

安装程序模板啦帝国cms精仿mm131美女图片站模板

精仿mm131美女图片源码,美女图库源码,美女图片网源码,美女网站源码 PHP+Mysql 整站打包下载,模板精美大方,拿来就能用,推荐下载研究!

Python爬虫实战-批量爬取美女图片网下载图片

Python爬虫实战-批量爬取美女图片网下载图片 视频教程作者:小锋老师官网:www.python222.com本课程旨在让大家在网站Python爬虫的基础上,实战巩固Python爬虫技术后期会继续推出进阶,高级课程,敬请期待。

java1234的博客 7573

漂亮的美女图片网站源码

·最快捷,最方便的图片上传和管理系统 ·采用MVC架构,详尽注释,方便二次开发和扩展 ·UTF-8编码,方便安装在国外主机 ·支持批量上传,抓取远程图片 ·外部图片自动保存在本地 ·自动控制上传图片和本地化图片尺寸 ·自动给上传及本地化图片添加水印 ·自动提取首张图片为缩略图 ·自动生成任意大小缩略图 ·幻灯片模式图片展示页 ·支持静态缓存,全站生成HTML ·内置采集器,迅速从网络抓取图文 ·自由分类,自动生成导航和内容调用 ·模板分离设计,轻松设计模板 ·方便自由的模板方法,可以实现复杂多样的调用效果 +----------------------------------+ PicCMS 运行环境需求 +----------------------------------+ 1. www服务器 Apache、Nginx、IIS 等 2. php 5.0 及以上 (不支持5.0以下版本) 3. MySQL 4.0 及以上 +----------------------------------+ PicCMS 安装说明 +----------------------------------+ 1. 上传 piccms 目录中的所有文件到服务器 2. 设置目录属性(windows 服务器可忽略这一步) 以下这些目录需要可读写权限(0777) ./attach ./data 含子目录 3. 执行安装脚本 /install.php 请在浏览器中访问 http://您的域名/安装目录/install.php 4. 安装完成后,请删除 install.php 文件 5. 默认后台地址 http://您的域名/安装目录/admin.php 默认密码: admin/admin888

极品mm写真图片网站

版本更新: 1、修复了分类页面出现多余代码; 2、增加了分类与内容页面标题; 3、增加了个Access数据库; 4、多增加了广告位; 5、修改了后台管理功能,内容如下: ⑴、去掉了程序配置里多余的代码; ⑵、修改了广告配置,让用户可以自由配置; ⑶、在原来的管理密码上增加了管理用户。 后台登陆地址:http://您的域名/login.asp 登陆帐号密码:topzm

【转】分享天涯潮女最爱的10个女性网站,强烈建议收藏!

1、瑞丽女性网(http://www.rayli.com.cn)   正如瑞丽杂志深受宠爱一样,瑞丽女性网也是一样的深受女性朋友的喜爱,身边好多懂得打扮,穿着时髦的朋友都会经常逛这个网站。据说女大学生里面3个人中就会有1个女性购买瑞丽杂志。如果你不购买瑞丽杂志,那么上瑞丽网也能让你有很多收获,有了它,你离潮女就不远了。 2、.妆点网(http://www.zdface.com/) ...

wangying9913的博客 46万+

在线浏览美图源码美女网站+python源码下载

介绍 美图网站千千万,美图自己说了算!本源码由@香谢枫林开发,首页图片做了浏览器窗口自适应,最大化占满PC浏览器和移动浏览器的窗口,并且防止出现滚动条。 源码截图 功能介绍 首页图片设置了4个点击功能区,分别是:上一张、下一张、全部随机、套图集随机(为了丰富移动端操作) 搜索功能注释隐藏了,想用的同学自己打开发开者模式解除注释即可 随机按钮:仅在右上角下拉菜单选中的图集中随机 随机All按钮:全部图片中随机 自动随机:仅在右上角下拉菜单选中的图集中自动随机(间隔1.5s) 自动随机All:全部图片中自动随机(间隔1.5s) 自动浏览:自动下一张(间隔1.5s) 套图1:点击跳转新窗口,查看套图所有图片(观赏模式一) 套图2:点击跳转新窗口,查看套图所有图片(观赏模式二) 索引:点击跳转新窗口,查看套图集 收藏:收藏图片,点击”Count“也能收藏 收藏列表:点击跳转新窗口,观赏收藏图片 #注:键盘任意键或者点击图片即可解除自动浏览状态; 按键介绍 @上一张:<–(左方向键) @下一张:–>(右方向键) @全部图集随机:(上方向键 或 alt键) @所选图集随机:(下方向键或shift键) @跳转套图第一张:(空格键) @收藏:(?问号键) @浏览整套图片(模式1):({左大括号) @浏览整套图片(模式2):(}右大括号) @关闭标签页(针对跳转的页面):(\顿号) @自动浏览(随机全部图集1.5s间隔):(”冒号键) @自动浏览(随机所选图集1.5s间隔):(;分号键) @回看随机历史:(《左书名号键) @自动浏览(下一张1.5s间隔):(》右书名号键) #注:任意键结束自动浏览状态;”{}”这两个按键在套图浏览页面可以切换浏览模式 使用说明 第一步:本地建库,把数据库下载到本地(线上数据库连接参数在global.php文件里)也可以自己创建数据库,需要3个基础表,分别是pc_dic_lanvshen、pc_dic_toxic、po_toxic(在数据库文件夹下) 第二步:修改数据库配置,global.php文件的database配置,设置成连接自己本地的数据库;到此,启动网站,你可以愉快的赏图了! 1.想改按键怎么办?在js/index.js文件中,有具体的按键对应功能说明,想改按键,只需要修改对应的键值即可(keyCode键值问度娘吧) 2.搜过功能有木有?在index.php文件中,取消注释id为tb和tj的两行代码即可显示搜索功能 说明 我做了3个美图网站的数据爬取功能,分别对应3个文件:lanvshen.py,lanvshen_qtw.py,lanvshen_mtll.py(顶部有注释对应哪个网站) 第一步:修改数据库配置文件conf/mysql_db.py,修改数据库连接,改成自己本地的数据库; 第二步:找到自己想要爬取的页面,修改主函数信息即可,只需要修改4个参数,如下图所示 注:Python记得下载好对应的插件(requests,re,time,random,BeautifulSoup)

(带手机端)美女图片美女写真网站模板 性感美女图片分享网站源码

该模板属于美女图片类、美女写真、图片分类企业都可使用这款模板使用范围极广,不仅仅局限于一类型的企业,你只需要把图片和产品内容换成你的,颜色都可以修改,改完让你耳目一新的感觉!4、网站手工DIV+css,代码精简,首页排版整洁大方、布局合理、利于SEO、图文并茂、静态HTML;2、效果相当的炫酷,相当简洁大气高端,模板简单,全部已数据调用,只需后台修改栏目名称即可。模板名称:(带手机端)美女图片美女写真网站 性感美女图片分享网站。1、该模板由热站网亲自制作,代码干净整洁;3、适用于美女图片类、美女写真类;

gapjun0722的博客 6万+

秀人网爬虫 55156爬虫.zip

爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

2020年最新美女图片整站源码,图片类套图类网站

此源码为了缩减内容不带任何图片数据,请搭建后自己采集或者录入,采集不会的话可以百度找一下采集教程,,也可以直接去淘宝上找做采集的,价格也不是很贵! 本帖资源标签:WordPress自适应图片主题,主题模板,带会员积分下载系统 分类和标签添加筛选功能; 列表增加用户自定义排序功能,支持点赞和浏览数量排序; 优化二级菜单和三级菜单的css样式; 支持会员功能和用户中心模板; 支持第三方快速登陆(QQ和新浪); 新增单图模式,全新的图片浏览模式; 新增登陆、注册、找回密码三合一页面模板; 新增文章点赞排行榜页面; 新增AJAX列表加载功能; 新增广告投放面板; 支持点卡充值和点卡生成功能; 支持积分签到功能; 支持评论和投稿奖励积分功能; 支持积分开通会员功能(目前内置3个级别的会员); 支持积分下载资源和免费资源下载; 支持vip免费资源添加; 新增下载资源管理员和作者查看下载次数和校验资源功能; 支持文章前台投稿功能; 支持前台开启相对地址和绝对地址切换功能; 新增图片自动分页功能; 新增图片分页浏览模板; 新增后台列表显示缩略图和封面图片功能; 全新的SEO功能; 新增文章收藏功能; 新增文章顶踩功能(踩的按钮目前只在单图模式显示); 新增图片预加载功能; 幻灯片支持外链和自定义大图; 源码测试环境推荐php5.2/5.3/5.4Mysql 安装说明: 上传文件拿到网站根目录,直接安装即可,附带wordpress。

养眼神器,爬取美女网站个人的写真套图

python爬虫,套图爬取

qq_46292926的博客 6567

【PHP项目源码-毕业设计期末大作业】PHP+MYSQL某蓝色清爽美女图片网站源码.zip

PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业 PHP后端项目整站源码毕业设计期末大作业

爬虫进阶:CrawlSpider爬取169ee全站美女图片

CrawlSpider前面,我们用了scrapy中的CrawlSpider爬取了糗事百科中大量段子数据。但是,qiubai这个爬虫没有充分利用CrawlSpider的优点。其实,在qiubai这个爬虫里面我们只是把CrawlSpider当做普通的Spider用而已。CrawlSpider继承自Spider,提供了Rule和LinkExtractor,使得爬虫框架能够自动按照规则提取Response中

绕行的专栏 3万+

LS-DYNA壳单元冲击仿真中的5个关键设置:以方管碰撞为例(含沙漏控制参数)

本文以方管碰撞为例,深入解析了LS-DYNA壳单元冲击仿真中的五个关键设置。重点探讨了沙漏控制参数(如IHQ=4)的选择逻辑、自接触算法优化、能量监控方法、材料模型(MAT_24)的真实应力-应变曲线与应变率效应设置,以及单元公式的选取。这些核心设置共同决定了仿真的精度与效率,是确保方管冲击仿真结果可靠性的基石。

salt的博客 625

先进半导体材料与器件Chapter3

Chapter3 异质结双极晶体管(HBT) 作者:毛茏玮 / Saint 掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博:https://weibo.com/5458277467/profile?topnav=1&wvr=6&is_all=1 GitHub:github.com/saint-000 知乎:https:/...

一个会写代码的烤鸭 5803

运用Python爬虫爬取一个美女网址,爬取美女图

运用Python爬虫爬取一个美女网址,爬取美女图 要运用到的python技术: 导入库 1.request 发送请求,从服务器获取数据 2.BeautifulSoup 用来解析整个网页的源代码 import requests from bas4 import BeautifulSoup 爬取网站的第一步:发送请求到服务器 resp=requests.get("https://www.umei.cc/")#从服务器拿到源代码 改变编码格式为utf-8 resp.encoding("utf-8") 爬取

Deng872347348的博客 5万+

ANSYS Products19.1下载及安装教程

ANSYS Products19.1下载及安装破解教程 前言 ANSYS软件是美国ANSYS公司研制的大型通用有限元分析(FEA)软件,是世界范围内增长最快的计算机辅助工程(CAE)软件,能与多数计算机辅助设计(CAD,computer Aided design)软件接口,实现数据的共享和交换,如Creo, NASTRAN、Algor、I-DEAS、AutoCAD等。ansys project包括一整套的软件集合,它耦合了CFD模型的前处理,求解器和后处理所需要的相关软件,特比是它的workbench模块,

Mekeater的博客 2万+

python爬虫学习之爬取169图片网站

169美女图片网以健康、美丽、年轻、时尚的审美定位,为广大网友展现美女的外形美,欣赏当代年轻女性一代的美丽与情怀。 源码分享: ''' 在学习过程中有什么不懂得可以加我的 python学习交流扣扣qun,934109170 群里有不错的学习教程、开发工具与电子书籍。 与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容。 ''' import reques...

Python新手学习之家 2543

告别‘小爱同学’:用ESP32-S3和esp-sr SDK,从零打造一个离线语音助手(含完整代码)

本文详细介绍了如何利用ESP32-S3芯片和esp-sr SDK从零构建一个离线语音助手,涵盖硬件选型、声学设计、SDK配置及低功耗优化等关键步骤。通过实战案例和完整代码,帮助开发者实现自定义唤醒词和命令词,打造低成本、高隐私的本地语音控制解决方案。

weixin_29041195的博客 371

STM32(HAL库)驱动st7789LCD屏幕(7引脚240*240)

屏幕厂家提供的都是标准库,网上找了找没看到好用的HAL库屏幕驱动,因此本文对HAL库驱动TFT屏幕进行详细讲解。

weixin_44597885的博客 6064

Jsoup学习 JAVA爬虫爬取美女网站 JAVA爬虫爬取美图网站 爬虫

最近对爬虫起了兴趣,但是网上都说做爬虫最好得语言是py。但是我只会java,所以就想能不能用java实现一个爬虫,百度搜索发现,其实java也有很多优秀得开源爬虫框架,包括Gecco,webmagic,Jsoup等等非常多得优秀开源框架,可以让我们在不是十分熟悉正则表达式得情况下也能实现爬虫爬取数据。 本案例使用Jsoup解析网页。使用Jsoup可以很方便的使用类似Jquery得选择器语法来选择

wangqq335的博客 4万+

基于Simulink的PR(比例谐振)控制器在单相整流中的应用

本文详细介绍了基于Simulink的单相整流系统中PR(比例谐振)控制器的设计与实现方法。首先阐述了PR控制器相较于传统PI控制器的优势,能够有效消除交流信号跟踪中的稳态误差。接着系统讲解了PR控制器的传递函数原理、实用型设计(带带宽)及参数整定方法。通过Simulink建模步骤,包括主功率电路搭建、电压外环PI设计、电流指令生成、PR控制器实现(推荐MATLAB Function方法)和SPWM调制等关键环节。仿真对比显示PR控制在电流跟踪精度(THD仅1.9%)、功率因数(0.998)和动态响应(突变恢

amy_mhd的博客 689

程序员的福利:使用WebCollector爬取某美女网站上的图片

某网站,有海量美女图片,里面默认是按美女的英文名字(A-Z)排序的。估算了一下,至少也得有几千位美女照片,每位的照片数目从几十张到上千张不等。浏览了几天,保存了也不少,才浏览了很少的一部分。心想,用浏览器浏览这么慢,效率那个低啊,这么多照片什么时候才能欣赏完。于是需求就来了:如何爬取这个网站上的美女图片呢?

UMBRELLA的技术博客 1万+

深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计

大家好,我是微学AI ,今天给大家介绍一下深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计。高中数学自适应测试系统旨在通过精准评估学生能力,用最少的题目发现其薄弱环节,并提供定制化的学习计划,帮助学生快速提升成绩。同时,系统结合了AI大模型实现自动判卷、生成报告,减轻教师负担,并支持个性化作业布置,使教学更加高效。学生可以清晰了解自身学习状态,教师也能获得精准的学生画像,实现差异化教学。

微学AI的博客 444

道路缺陷检测实战指南:基于YOLOv11的深度学习系统从搭建到落地

道路缺陷检测项目的每一步,都是“理论→实践→反思→优化”的成长循环。当你看到自己开发的系统能精准识别出道路上的每一处裂缝、每一个坑洼时,那种“技术解决真实问题”的成就感,会让你明白深度学习不止是论文里的公式,更是改变行业的工具。如果过程中遇到模型不收敛、界面功能异常等问题,不妨把问题拆解成“数据是否标注准确?”“模型参数是否合理?”“界面逻辑是否有漏洞?”等小问题逐一排查。记住,每解决一个问题,你就离“能独立落地AI项目的工程师”更近一步。

LXY_LOVE36的博客 171
上一篇: Git(GitHub) 007 如何删除一个库
下一篇: Python3 大型网络爬虫实战 004 — scrapy 大型静态商城网站爬虫项目编写及数据写入数据库实战 — 实战:爬取淘宝
AoboSir
博客等级 码龄10年 996粉丝 285原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值