Python干货:用Scrapy爬电商网站

news/2024/5/9 17:57:21/文章来源:https://blog.csdn.net/weixin_34144450/article/details/89650299

电商老板,经理都可能需要爬自己经营的网站,目的是监控网页,追踪网站流量,寻找优化机会等。

对于其中的每一项,均可以通过离散工具,网络抓取工具和服务来帮助监控网站。只需相对较少的开发工作,就可以创建自己的站点爬网程序和站点监视系统。

构建自定义的爬虫站点和监控程序, 第一步是简单地获取网站上所有页面的列表。本文将介绍如何使用Python编程语言和一个名为Scrapy的整洁的Web爬网框架来轻松生成这些页面的列表。

3b99c8eff4f36d92399a04aa08931c9f

你需要一个服务器,Python和Scrapy

这是一个开发项目。需要安装Python和Scrapy的服务器。还需要通过终端应用程序或SSH客户端对该服务器的命令行进行访问。还可以从Python.org的文档部分获取有关安装Python的信息。Scrapy网站还有很好的安装文档。请确认您的服务器已准备好安装Python和Scrapy。

创建一个Scrapy项目

使用像Putty for Windows这样的SSH客户端或Mac,Linux计算机上的终端应用程序,导航到要保留Scrapy项目的目录。使用内置的Scrapy命令startproject,我们可以快速生成所需的基本文件。

本文将抓取一个名为Business Idea Daily的网站,因此将该项目命名为“bid”。

生成一个新的Scrapy Web Spider

为方便起见,Scrapy还有另一个命令行工具,可以自动生成新的Web Spider。

scrapy genspider -t crawl getbid businessideadaily.com

第一个术语,scrapy,参考Scrapy框架。接下来,有genspider命令告诉Scrapy我们想要一个新的web spider,或者,如果您愿意,还想要一个新的网络爬虫。

-t告诉Scrapy我们想要选择一个特定的模板。genspider命令可以生成四个通用Web Spider模板中的任何一个:basic,crawl,csvfeed和xmlfeed。直接在-t之后,我们指定了想要的模板。在这个例子中,我们将创建被Scrapy称为CrawlSpider的模板。 “getbid”这个词就是spider的名字。

该命令的最后一部分告诉Scrapy我们想要抓取哪个网站。框架将使用它来填充一些新spider的参数。

定义Items

在Scrapy中,Items是组织我们spider爬行特定网站时收集东西的方式/模型。虽然我们可以很容易地完成我们的目标- 获取特定网站上所有页面的列表- 不使用Items,但如果我们想稍后扩展我们的爬虫,则不使用Items可能会限制我们。

要定义一个Item,只需打开我们生成项目时创建的Scrapy的items.py文件。在其中,将有一个名为BidItem的类。类名基于我们为项目提供的名称。

class BidItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()pass

将pass替换为名为url的新字段的定义。

url = scrapy.Field()

保存做好的文档

385ed9ef9a6bca4a2285640825ac79eb

构建Web Spider

接下来打开项目中的蜘蛛目录,查找生成的新Spider Scrapy。 在这个例子中,这个蜘蛛叫做getbid,所以文件是getbid.py。

在编辑器中打开此文件时,您应该看到如下所示的内容。

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from bid.items import BidItem
class GetbidSpider(CrawlSpider):name = 'getbid'allowed_domains = ['businessideadaily.com']start_urls = ['http://www.businessideadaily.com/']
rules = (Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True),)
def parse_item(self, response):i = BidItem()#i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()#i['name'] = response.xpath('//div[@id="name"]').extract()#i['description'] = response.xpath('//div[@id="description"]').extract()return i

我们需要对为我们生成的代码Scrapy进行一些小的更改。 首先,我们需要在规则下修改LinkExtractor的参数。删除括号中的所有内容。

Rule(LinkExtractor(), callback='parse_item', follow=True),

通过此更新,我们的spider将在起始页面(主页)上找到每个链接,将单个链接传递给parse_item方法,并按照指向网站下一页的链接来确保我们获取每个链接页面。

接下来,我们需要更新parse_item方法。 删除所有注释行。这些线条只是Scrapy为我们提供的例子。

def parse_item(self, response):i = BidItem()return i

我喜欢使用有意义的变量名。 所以我要将i更改为href,这是HTML链接中属性的名称,如果有的话,它将保存目标链接的地址。

def parse_item(self, response):href = BidItem()return href

现在奇迹发生了,我们捕获页面URL为Items。

def parse_item(self, response):href = BidItem()href['url'] = response.urlreturn href

这就对了。 新Spider已经准备好爬行了。

抓取网站,获取数据

从命令行,我们想要导航到我们的项目目录。 进入该目录后,我们将运行一个简单的命令来发送我们的新蜘蛛并获取一个页面列表。

scrapy crawl getbid -o 012916.csv

该命令有几个部分。 首先,我们参考Scrapy框架。 我们告诉Scrapy我们想爬行。 我们指定要使用getbid蜘蛛。

-o告诉Scrapy输出结果。 该命令的012916.csv部分告诉Scrapy将结果放在带有该名称的逗号分隔值(.csv)文件中。

在示例中,Scrapy将返回三个页面地址。 我为这个例子选择这个网站的原因之一是它只有几页。 如果你在一个有数千页的网站上瞄准一个类似的蜘蛛,它将需要一些时间来运行,但它会返回一个类似的响应。

url
https://businessideadaily.com/auth/login
https://businessideadaily.com/
https://businessideadaily.com/password/email

只需几行代码,您就可以为自己的站点监控应用程序奠定基础。

本文由数据星河原创内容

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

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

相关文章

Xilinx网站 – 如何申请官方IP的评估license

作者:圆宵 FPGA那点事儿 问题描述: 在Xilinx中的很多IP和开发工具,都是需要付费才能购买正版的license的。不过XIlinx一般也提供有评估版本的license,可以供大部分客户来免费申请。 下面就简单介绍下评估license的申请途径和方法…

SEO人员:常用的三种链接建设策略!

链接建设是SEO工作,最具挑战的策略之一,同时,它也是百度以及其他搜索引擎对网站排名的一个重要因素,在网站优化过程中,它可以说是一种长期策略。万事开头难,任何一项工作,通过长期的经验积累&am…

IPv6系列(二)--现有网站快速接入

一、 购买并配置“IPv6转换服务” 1.1 进入以下链接进行购买 链接:https://www.aliyun.com/product/ipv6trans 1.2 选择合适的参数 1.3 配置IPv6转换服务 添加映射条目(复制下图中的IPv6地址,备用) 等待配置生效(…

[转载]使用IntelliJ IDEA开发SpringMVC网站(一)开发环境

访问GitHub下载最新源码:https://github.com/gaussic/Sp... 文章已针对IDEA 2016做了一定的更新,部分更新较为重要,请重新阅读文章并下载最新源码。另外:文中的附图部分仍然为旧版本,请参照自身版本进行配置。 前言 由…

像淘宝、京东这样的大型电商网站服务器构架完全部署解决方案

任何一个大型网站都是经历用户积累然后成长,从一台服务器到多台服务器才能构架支撑网站现有数据、用户、页面请求等。大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务…

响应式设计工具网站mydevice.io

1、网址 https://mydevice.io/ 2、使用 在mydevice.io上有常见智能手机,PC电脑的尺寸。

高清图片免费素材网站分享

这3个资源强大的图片素材网站!知乎大佬强烈推荐,再也不怕高清配图难找! 有效的进行搜索图片就可以大大提高你的工作效率,所以今天跟大家分享3个图片素材网站。可以免费下载高清图片! Hippopx 官网地址:h…

大型网站架构演变和知识体系 附带图片

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而 没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什…

[转]大型高性能网站的十项规则

在我们公司ChinaNetCloud,见 过多种不同类型的网站和系统,有好也有差。其中有些系统拥有良好的服务器/网络架构,并且进行了合理的调整和监控 ;然而一般的系统都会有安全和性能上的 问题,不能良好运行,也无法…

[转]LAMP网站架构方案分析

LAMP(Linux-Apache-MySQL- PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者 Python编程语言,所有组成产品均是开源软件…

百万流量网站架构

最近设计一个网站,设计目标是百万访问量. 做了一些架构的设计. 同时对二期架构进行了展望<script typetext/javascript charsetutf-8 src"http://static.bshare.cn/b/buttonLite.js#style-1&uuid&pophcol3&langzh"></script> <script t…

[转]高并发高流量网站架构设计(参考)

高并发高流量网站架构设计&#xff08;参考&#xff09; 2009-11-24 16:19:58 来自: sharp(follow my heart) 目 录 1引言9 1.1互联网的发展9 1.2互联网网站建设的新趋势9 1.3新浪播客的简介11 2网络层架构12 2.1镜像网站技术12 2.2 CDN内容分发网络13 2.3应用层分布式设计1…

安全机构 abuse.ch 公布近10万个恶意网站

百度智能云 云生态狂欢季 热门云产品1折起>>> 据官方博客文章&#xff0c;2018 年 3 月底&#xff0c;非盈利安全机构 abuse.ch 运行了一个名为 URLhaus 的项目。这个致力于收集和分享散布恶意软件的网站 URL 的项目取得了巨大的成功&#xff0c;URLhaus 在 10 个月…

php特级课---2、网站大数据如何存储

php特级课---2、网站大数据如何存储 一、总结 一句话总结&#xff1a; mysql主从&#xff0c;分库分表&#xff0c;mysql分区&#xff0c;mysql集群&#xff0c;Nosql 1、mysql主从服务器各自的功能是什么&#xff1f; 增删改&#xff0c;主服务器 查询&#xff0c;备份&#x…

网站安装打包 软件环境检测与安装[二] 上

2019独角兽企业重金招聘Python工程师标准>>> 这一节主要讲检测&#xff0c;下一节讲安装! 一个C#制作完的工具一运行&#xff0c;一个可以不用检测与安装的就是framework环境了,要是没这东西&#xff0c;也运行不起来。 这里提供几个检测的范围&#xff1a; 一.检测…

大型网站技术架构(一)大型网站架构演化

2019独角兽企业重金招聘Python工程师标准>>> 看完了有一本书&#xff0c;就应该有所收获&#xff0c;有所总结&#xff0c;最近把《大型网站技术架构》一书给看完了&#xff0c;给人的印象实在深刻&#xff0c;再加上之前也搞过书本上讲的反向代理和负载均衡以及ses…

12 个免费的 Deep Learning 在线学习网站

转载自&#xff1a;https://zhuanlan.zhihu.com/p/26501934 欢迎留言交流~~~ Deep Learning 改变着世界&#xff0c;各种利用 DL 的技术已经开始服务人类&#xff1a; 发现癌症&#xff08;准确率远超人类病理学家&#xff0c;Google 用深度学习算法检测癌症 &#xff09;、 图…

网站访问量怎么刷_网站建设怎么获得访问量?

一、圈子里宣传在网站建设完成之后&#xff0c;企业可以将网站转发到一些平台上&#xff0c;尤其是聊天软件。这样通过人与人之间的转发&#xff0c;能够小范围提高网站访问量。也可以发到空间或者朋友圈&#xff0c;甚至一些社交平台上&#xff0c;利用自己的人脉迅速让一个小…

Python实战项目之博客网站搭建

参考&#xff1a;廖雪峰网站 https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 http://blog.csdn.net/lm409/article/details/63687293 Day 1 - 搭建开发环境 搭建开发环境 首先&#xff0c;确认系统安装的Python版本是3.5.x&#xf…

Google 联合一些社交网站来对抗 facebook

谷歌(Google) 将与其它一些行业领先的社交网站联手&#xff0c;共同对抗互联网新贵Facebook。  谷歌将于周四推出一个通用标准集 ( OpenSocial )&#xff0c;允许软件开发者为谷歌旗下社交网站Orkut&#xff0c;以及LinkedIn、hi5、Friendster、Plaxo和Ning等其它社交网站开…