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

本文介绍了如何使用Python3和Scrapy框架爬取169美女图片网站上的西洋美女高清图片。通过分析网页结构,制定了爬取策略,包括获取所有页面链接、解析图片URL并下载。同时,文章涉及了防反爬技术和图片下载过程中的问题处理。
部署运行你感兴趣的模型镜像

原博文链接: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/

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

介绍 美图网站千千万,美图自己说了算!本源码由@香谢枫林开发,首页图片做了浏览器窗口自适应,最大化占满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)
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后端项目整站源码毕业设计期末大作业
此源码为了缩减内容不带任何图片数据,请搭建后自己采集或者录入,采集不会的话可以百度找一下采集教程,,也可以直接去淘宝上找做采集的,价格也不是很贵! 本帖资源标签:WordPress自适应图片主题,主题模板,带会员积分下载系统 分类和标签添加筛选功能; 列表增加用户自定义排序功能,支持点赞和浏览数量排序; 优化二级菜单和三级菜单的css样式; 支持会员功能和用户中心模板; 支持第三方快速登陆(QQ和新浪); 新增单图模式,全新的图片浏览模式; 新增登陆、注册、找回密码三合一页面模板; 新增文章点赞排行榜页面; 新增AJAX列表加载功能; 新增广告投放面板; 支持点卡充值和点卡生成功能; 支持积分签到功能; 支持评论和投稿奖励积分功能; 支持积分开通会员功能(目前内置3个级别的会员); 支持积分下载资源和免费资源下载; 支持vip免费资源添加; 新增下载资源管理员和作者查看下载次数和校验资源功能; 支持文章前台投稿功能; 支持前台开启相对地址和绝对地址切换功能; 新增图片自动分页功能; 新增图片分页浏览模板; 新增后台列表显示缩略图和封面图片功能; 全新的SEO功能; 新增文章收藏功能; 新增文章顶踩功能(踩的按钮目前只在单图模式显示); 新增图片预加载功能; 幻灯片支持外链和自定义大图; 源码测试环境推荐php5.2/5.3/5.4Mysql 安装说明: 上传文件拿到网站根目录,直接安装即可,附带wordpress。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值