Python干货:用Scrapy爬电商网站

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

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

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

构建自定义的爬虫站点和监控程序, 第一步是简单地获取网站上所有页面的列表。本文将介绍如何使用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.url
 return href

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

抓取网站,获取数据

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

scrapy crawl getbid -o 012916.csv

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

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

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

url
https://businessideadaily.com/

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

本文由数据星河原创内容

相关文章
|
1月前
|
API 开发工具 开发者
【干货满满】电商平台API接口用python调用脚本
这是一个支持淘宝、京东、拼多多、亚马逊等主流电商平台的通用 API 调用 Python 脚本框架,适配 doubao 使用。脚本封装了签名验证、请求处理、异常捕获及限流控制等核心功能,提供统一接口调用方式,便于开发者快速集成与扩展。
|
7月前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
203 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
1月前
|
API 数据安全/隐私保护 Python
拼多多批量上架软件, 电商一键上货发布工具,python电商框架分享
多线程批量上传架构,支持并发处理商品数据 完整的拼多多API签名和token管理机制
|
1月前
|
Java API 数据处理
淘宝批量上架软件脚本,电商一键上货软件, 淘宝一键铺货软件【python】
核心功能:实现淘宝商品批量上传,包含登录认证、商品数据处理、图片处理和API调用 多线程处理
|
4月前
|
数据采集 前端开发 JavaScript
Python爬虫如何应对网站的反爬加密策略?
Python爬虫如何应对网站的反爬加密策略?
251 11
|
10月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
414 6
|
5月前
|
前端开发 JavaScript 关系型数据库
基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行
该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。
157 6
|
6月前
|
数据采集 JavaScript Python
如何根据目标网站调整Python爬虫的延迟时间?
如何根据目标网站调整Python爬虫的延迟时间?
|
7月前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
295 6
从零开始:用Python爬取网站的汽车品牌和价格数据
|
6月前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。

推荐镜像

更多