基于 flask 框架的模拟instagram 图片分享网站的开发 7 (爬虫机器人)

news/2024/5/12 18:29:08/文章来源:https://blog.csdn.net/zhyh1435589631/article/details/52017226

1. 前言

我们之前使用flask实现了一个模拟instagram的图片分享网站的开发, 但是图片的更新需要用户上传, 但是由于用户比较少, 鉴于这个问题, 我们就考虑引入一个爬虫机器人, 自动的向web程序相关的数据库表项中写入数据。

2. scrapy框架

这里选用的是scrapy框架:
参考资料:
1.官方文档: http://doc.scrapy.org/en/latest/intro/tutorial.html
2. http://blog.csdn.net/zhyh1435589631/article/details/51516241

借助这个框架, 我们可以借助非常精简的代码, 实现复杂的抓取工作。

3. 思路分析

  1. 我们这里需要抓取的页面为 poco.cn 的风景图:
    http://photo.poco.cn/like/index-upi-p-1-tpl_type-hot-channel_id-4.html#list
    通过分析, 发现这里 p-1 标识第一页, 相应的第n页, 即为 p-n

  2. 提取相应图片的url
    这里写图片描述
    经过测试, 发现onerror后面紧接着的连接即为我们需要的图片的url地址了, 通过简单的xpath, 和 re 方法组合, 我们可以方便的提取相应的元素

  3. 将爬取下来的图片的url存入数据库
    这里主要使用之前instagram项目中的数据库中的表项 image, 利用mysqldb 方法进行连接。
    参考资料: http://blog.csdn.net/zhyh1435589631/article/details/51544903

4. 实现代码

主要实现功能, 抓取poco风景类前100页对应的图片的url, 并存到相应的image 表中。

import scrapy
from model import db1
from datetime import datetimefrom tutorial.items import TutorialItemINSERT_SQL = "insert into image (url, user_id, create_date) values ('%s', %d, '%s')"class DmozSpider(scrapy.Spider):name = "poco"allowed_domains = ["poco.cn"]page_id = 1url_prefix = "http://photo.poco.cn/like/index-upi-p-"url_suffix = "-tpl_type-hot-channel_id-1.html#list"start_urls = [url_prefix + str(page_id) + url_suffix,]def parse(self, response):total_page = response.xpath('//*[@id="list"]/div/a/text()').extract()[-2]# for i in range(1, int(total_page) + 1, 1):for i in range(1, 2, 1):url = self.url_prefix + str(i) + self.url_suffixprint urlyield scrapy.Request(url, callback=self.parse_url)def parse_url(self, response):for item in response.xpath('//*[@id="list"]/div/ul/li/div/a/img/@onerror'):item1 = TutorialItem()item1['url'] = item.re("onerror_for.*'(.*)'.*'http:.*'");sql = INSERT_SQL % (item1['url'][0], 32, datetime.now().strftime("%Y-%m-%d %H:%M:%S"))print sqldb1.execute(sql)yield item1

5. 抓取效果

这里写图片描述
为了简单起见, 我们这里只抓取了前2页的图片url信息, 存入数据库。

6. 说明

本来想将这个程序放到服务器上的, 不过可惜配置lxml的时候出现了问题。
command ‘gcc’ failed with exit status 4
找了好久终于发现, 原来是我们的服务器的内存太小导致的。。。那就没办法了。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_856900.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

url带斜杠和不带斜杠对seo优化的影响

点我进入原文 ps: seo 是指搜索引擎优化 url带斜杠和不带斜杠对seo优化的影响 作为seo的专员对于这个问题,我觉得很多细心的人都能发现,这二者的区别,但是不知道其中奥妙。今天博主给大家说说关于搜索引擎网址中带/与不带/对于seo的影响。 在…

高并发高流量网站架构

http://blog.csdn.net/SmartTony/archive/2010/09/09/5874485.aspx Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网…

从“奥运门票网站800万访问量”想到的成本、质量、进度、风险等关系

看到这个新闻后颇有一番滋味,更体验到我一直关注的软件性能着实无处不在,这个案例也确实值得我们好好反思一下。 不知道网友们有没有报名参加国际日语考试的——这个网站每年05年前都有人不能报名,因为报名人数太多,所以报名当日大…

h5跳微信小程序流程实现——使用云函数,不开通静态网站

官方开源库: GitHub TCloudBase/WXSEVER-SMS 参考教程: https://developers.weixin.qq.com/community/develop/doc/000ae2a7a7c9402a4d8bca2875b409 此教程为官方提供,包含视频文档 步骤: 1. 开通云开发 2. 新建云函数 ope…

搜索引擎SEO外挂:一边搜索,一边看PageRank

搜索引擎SEO外挂:一边搜索,一边看PageRank 下载地址:多么乐站长工具 我原来曾写过一篇统计分析搜索引擎排名和Page Rank 关联分析 的文章。很多人引用,回复和我讨论了我的结论。有赞成的,有反对的,有鼓励的…

seo优化:把百度放进数据库

seo优化:把百度放进数据库 有时候我想,能把百度的数据放进数据库,用广大程序员熟悉的sql语句查询百度的搜索结果应该是一个不错的主意。在这方面Google早已经跨出了一大步,利用Google Search API 把Google的搜索结果放进数据库是很容易办到得…

商业网站 第八章 注册登陆模板设计

注册——插入记录 服务器行为——添加——插入记录——连接:web_ljdata——插入到表格:T_user——获取值自:form1(注册表单)——表单元素——注册成功后:插入后转到(注册成功表单) 验证登陆信息 数据库面板…

网站推荐机制中的艺术、科学与商务问题

网站推荐机制是电子商务或内容网站的核心功能之一。例如你在一个网站买了一本书后,网站会推荐其他你可能会感兴趣的书。这被认为是亚马逊等电子商务巨头成功的关键。本文对几个出色的推荐系统进行了较透彻的分析。 2006年10月,Netflix搞了一次不寻常的有…

平面设计素材网站-庞姿姿

哈喽,大家好!今天为大家分享的是免费的平面设计素材网站,设计类网站是大家在所难免需要的了吧,下面就是我发现的比较好用的免费的平面设计素材网站,感兴趣的小伙伴看过来,如果你还发现其它好的网站评论一起…

OpenCms创建网站过程图解——献给OpenCms的初学者们

很多人都听说了OpenCms,知道了它的强大,索性的下载安装了,终于见到了久违OpenCms,看到了它简洁的界面,欣喜过后却不免一脸茫然,这个东西怎么用,我怎么用它来建站,从哪开始&#xff0…

视觉素材-免费高清!10个无版权限制的大图特供网站

今天为大家整理目前优秀的提供免费图片素材资源网站,这些网站的图片质量相当高,大部分为高分辨率(高解析),并且,最重要的是,它是免费的,无版权限制!同时具备免费、高清&a…

获取任意网站的图标,标题栏logo,网站logo的方法

不错呦~我想要这个图标怎么办呢? 直接使用网址加上: https://csdn.net/favicon.ico 获取到了 说明:这种方法适用于百分之九十的站点,如果你有想要使用的LOGO或者ico可以使用此方法简单获取。

【引用】iphone开发的好网站

分享iphone开发的好网站,希望大家也能提供一些分享下 收藏 1、http://developer.apple.com/iphone/library 这个是官方的代码实例 2、www.cocoachina.com 这个网站比较适合初期开发者,上面的版主之类的也比较热心,一般的问题都会提供帮助 3…

[.Net Core学习一]网站发布

1.首先点击图片IIS上的模块 判断是否存在 如果没有去官网下载 安装好后 按照formwork版发布即可 结果

功能超全的在线文件转换网站

转自http://blog.360converter.com/archives/1314 最近在做一个图标,找了很多的网站,有些根本就不能转换,有些可以转换,不过转换的出来的icon文件超级大,一个6464的icon转换出来达到了几百k,甚至上1M。不过…

免费文字转语音的网站

此文链接:http://blog.360converter.com/archives/1318 在通常的工作生活中,有时,我们需要将一段话,一段文字转换语音,语音文件以音频格式存储传播,如mp3, wma,wav等格式。 为了完成上述功能&#xff0c…

利用一句话木马获取网站web权限

1.登录网站后台,寻找文件上传地方 进入网站管理后台并登录管理员帐户和密码,寻找文件上传点。此网站有多个可上传文件的地方,在这我们选择附件管理页面中的上传附件。 2.写入一句话木马文件,并上传到网站上 为方便寻找可直接在…

使用LNMP架构部署动态网站环境

使用LNMP架构部署动态网站环境 实验环境 linux操作系统,本文用的是centos7版本的 实验是需要的安装软件包 链接:https://pan.baidu.com/s/11f4Y6GO0ehQDjc-idUJ5lA 提取码:nxfv 复制这段内容后打开百度网盘手机App,操作更方便…

使用 Chrome 开发者工具实现网站快速开发的12个小技巧

转载 chrome迷 http://www.chromi.org/archives/10612 Google 的软件工程师 Pavel Feldman 和 Alexander Pavlov 最近在 Chromium 官方博客公布了一段视频(iOS用户点这里),讲述了使用 Chrome 开发者工具进行快速网站开发的12个小技巧,对于 Web 开发人员来…