前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Scrapy爬虫,华为商城商品数据爬虫demo

Scrapy爬虫,华为商城商品数据爬虫demo

作者头像
二爷
发布于 2020-11-25 03:01:48
发布于 2020-11-25 03:01:48
78900
代码可运行
举报
文章被收录于专栏:二爷记二爷记
运行总次数:0
代码可运行

来自于华为云开发者大会,使用Python爬虫抓取图片和文字实验,应用Scrapy框架进行数据抓取,保存应用了mysql数据库,实验采用的是线上服务器,而这里照抄全是本地进行,如有不同,那肯定是本渣渣瞎改了!

  • step1.配置环境

1.新建文件夹 huawei

2.命令行配置python虚拟环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python -m venv ven

3.安装Scrapy框架

win7 64位系统下安装Scrapy框架 “pip install scrapy”,需要先安装相关环境,不然会报错,比如Twisted-,请自行对照python版本安装,本渣渣用的python3.8的所以下载的是Twisted-20.3.0-cp38-cp38-win_amd64.whl,没错,本渣渣是本地安装的方法安装的!

详细安装 win 安装Scrapy框架方法,推荐善用搜索引擎!

  • step2.创建Scrapy项目

同样的命令行操作

1.需要进入到指定目录,激活虚拟环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd huawei
env\Scripts\activate.bat

2.cmd命令行,新建Scrapy项目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scrapy startproject vmall_spider
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd vmall_spider
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scrapy genspider -t crawl vmall "vmall.com"
  • step3.关键源码

1.vmall.py(核心爬取代码)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from vmall_spider.items import VmallSpiderItem

class VamllSpider(CrawlSpider):    
 name = 'vmall'    
 allowed_domains = ['vmall.com']    
 start_urls = ['https://www.vmall.com/']    
 rules = (        
  Rule(LinkExtractor(allow=r'.*/product/.*'), callback='parse_item', follow=True),    
  )   

 def parse_item(self, response):
  title=response.xpath("//div[@class='product-meta']/h1/text()").get()     
  image=response.xpath("//a[@id='product-img']/img/@src").get()        
  item=VmallSpiderItem(
   title=title,
   image=image,
  )
  print("="*30)        
  print(title)
  print(image)        
  print("="*30)        
  yield item
    

2.items.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import scrapy


class VmallSpiderItem(scrapy.Item):
    title=scrapy.Field()
    image=scrapy.Field()
    

3.pipelines.py

数据存储处理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

import pymysql
import os
from urllib import request


class VmallSpiderPipeline:    
 def __init__(self):        
  dbparams={
      'host':'127.0.0.1', #云数据库弹性公网IP
      'port':3306, #云数据库端口            
      'user':'vmall', #云数据库用户
      'password':'123456', #云数据库RDS密码
      'database':'vmall', #数据库名称            
      'charset':'utf8'        
  }        
  self.conn=pymysql.connect(**dbparams)        
  self.cursor=self.conn.cursor()        
  self._sql=None

  self.path=os.path.join(os.path.dirname(os.path.dirname(__file__)),'images')        
  if not os.path.exists(self.path):            
   os.mkdir(self.path)    


 def process_item(self,item,spider):        
  url=item['image']        
  image_name=url.split('_')[-1]        
  print("--------------------------image_name-----------------------------")        
  print(image_name)        
  print(url)        
  request.urlretrieve(url,os.path.join(self.path,image_name))        
  self.cursor.execute(self.sql,(item['title'], item['image']))        
  self.conn.commit()        
  return item  
    

3.settings.py

更改的部分代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BOT_NAME = 'vmall_spider'

SPIDER_MODULES = ['vmall_spider.spiders']
NEWSPIDER_MODULE = 'vmall_spider.spiders'

ROBOTSTXT_OBEY = False

DOWNLOAD_DELAY = 3

DEFAULT_REQUEST_HEADERS = {
 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',    
 'Accept-Language': 'en',    
 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36',    
 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',    
 'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16'
}

ITEM_PIPELINES = {
 'vmall_spider.pipelines.VmallSpiderPipeline': 300,
}

4.新建 start.py 运行调试入口文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from scrapy import cmdline
cmdline.execute("scrapy crawl vmall".split())

  • step4.本地数据库配置

工具:phpstudy-面板(小皮面板)

链接工具:Navicat for MySQL

运行

来源:

使用Python爬虫抓取图片和文字实验

https://lab.huaweicloud.com/testdetail.html?testId=468&ticket=ST-1363346-YzykQhBcmiNeURp6pgL0ahIy-sso

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与SEO学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
拥有了这个, 天下的美图都是你的!!!
今天本狗就给大家分享一串神奇的 ” 东东“, 它可以下载任意多的图片,因为本狗很喜欢那个网站的图片了, 所以就,,,, 而且都是高清图哦!!在此分享给大家!!!
Python知识大全
2020/02/13
4890
拥有了这个, 天下的美图都是你的!!!
Scrapy爬取自己的博客内容
根据给定的文章内容,撰写摘要总结。
古时的风筝
2018/01/08
8560
Scrapy爬取自己的博客内容
Python之CrawlSpider
CrawlSpider可以定义规则,再解析html内容的时候,可以根据链接规则提取出指定的链接,然后再向这些链接发送请求所以,如果有需要跟进链接的需求,意思就是爬取了网页之后,需要提取链接再次爬取,使用CrawlSpider是非常合适的
鱼找水需要时间
2023/02/16
3950
Python之CrawlSpider
Scrapy入门案例——腾讯招聘(CrawlSpider升级)
需求和上次一样,只是职位信息和详情内容分开保存到不同的文件,并且获取下一页和详情页的链接方式有改动。
100000860378
2018/09/13
7740
Scrapy入门案例——腾讯招聘(CrawlSpider升级)
Python爬虫之分布式爬虫
搭建分布式机群,让其对一组资源进行分布式联合爬取 提升爬取效率 实现分布式: pip install scrapy-redis scrapy-redis 组件的作用: 给原生的scrapy框架提供可以被共享的管道和调度器 ---- 分布式爬虫 实现步骤: scrapy startproject firstdemo scrapy genspider -t crawl xxx [www.xxx.com](http://www.xxx.com/) 修改当前爬虫文件 导包 : from scrapy_r
shaoshaossm
2022/12/26
4660
Scrapy项目实战:爬取某社区用户详情
get_cookies.py from selenium import webdriver from pymongo import MongoClient from scrapy.crawler import overridden_settings # from segmentfault import settings import time import settings class GetCookies(object): def __init__(self): # 初始化组件
hankleo
2020/09/17
5660
python爬虫----(4. scrapy框架,官方文档以及例子)
官方文档: http://doc.scrapy.org/en/latest/ github例子: https://github.com/search?utf8=%E2%9C%93&q=sc
lpe234
2020/07/27
7050
【Lighthouse教程】scrapy爬虫初探
最近经常有朋友让我帮忙写个爬虫,便萌生了一个写一篇简单的scrapy教程的想法,旨在帮助没有太多爬虫经验的朋友,可以快速爬取到所需的信息.
AmazzzingShang
2020/09/14
9611
【Lighthouse教程】scrapy爬虫初探
Python网络爬虫(七)- 深度爬虫CrawlSpider1.深度爬虫CrawlSpider2.链接提取:LinkExtractor3.爬取规则:rules4.如何在pycharm中直接运行爬虫5.
目录: Python网络爬虫(一)- 入门基础 Python网络爬虫(二)- urllib爬虫案例 Python网络爬虫(三)- 爬虫进阶 Python网络爬虫(四)- XPath Python网络爬虫(五)- Requests和Beautiful Soup Python网络爬虫(六)- Scrapy框架 Python网络爬虫(七)- 深度爬虫CrawlSpider Python网络爬虫(八) - 利用有道词典实现一个简单翻译程序 深度爬虫之前推荐一个简单实用的库fake-useragent,可以伪装
Python攻城狮
2018/08/23
1.9K0
Python网络爬虫(七)- 深度爬虫CrawlSpider1.深度爬虫CrawlSpider2.链接提取:LinkExtractor3.爬取规则:rules4.如何在pycharm中直接运行爬虫5.
Amazon图片下载器:利用Scrapy库完成图像下载任务
本文介绍了如何使用Python的Scrapy库编写一个简单的爬虫程序,实现从Amazon网站下载商品图片的功能。Scrapy是一个强大的爬虫框架,提供了许多方便的特性,如选择器、管道、中间件、代理等。本文将重点介绍如何使用Scrapy的图片管道和代理中间件,以提高爬虫的效率和稳定性。
jackcode
2023/10/18
3300
Amazon图片下载器:利用Scrapy库完成图像下载任务
安装和使用Scrapy
可以先创建虚拟环境并在虚拟环境下使用pip安装scrapy。 $ 项目的目录结构如下图所示。 (venv) $ tree . |____ scrapy.cfg |____ douban | |____ spiders | | |____ __init__.py | | |____ __pycache__ | |____ __init__.py | |____ __pycache__ | |____ middlewares.py | |____ settings.py | |____ items.py |
用户8442333
2021/05/21
4840
scrapy爬虫标准流程
一般我们一个小的爬虫项目,比如爬取一些文章等,直接用python的requests库,配合re模块就可以很快的完成。但是对于一些大规模的爬取,我们需要实现多线程、异步io,数据库连接等操作,自己从头写起会有些麻烦。这时可以用scrapy这个爬虫框架。
羽翰尘
2019/11/20
6380
python爬虫–scrapy(再探)
— 图片:xpath解析出图片src的属性值。单独的对图片地址发起请求获取图片二进制类型的数据。
全栈程序员站长
2021/04/21
6410
python爬虫–scrapy(再探)
爬虫之scrapy框架
  何为框架,就相当于一个封装了很多功能的结构体,它帮我们把主要的结构给搭建好了,我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据,提取数据的框架,我们熟知爬虫总共有四大部分,请求、响应、解析、存储,scrapy框架都已经搭建好了。scrapy是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架,scrapy使用了一种非阻塞的代码实现并发的,结构如下:
py3study
2020/01/17
1.3K0
Python爬虫 --- 2.5 Scrapy之汽车之家爬虫实践
Scrapy框架为文件和图片的下载专门提供了两个Item Pipeline 它们分别是:
緣來
2018/09/18
7400
Python爬虫 --- 2.5 Scrapy之汽车之家爬虫实践
Scrapy框架中crawlSpider的使用——爬取内容写进MySQL和拉勾网案例
Scrapy框架中分两类爬虫,Spider类和CrawlSpider类。该案例采用的是CrawlSpider类实现爬虫进行全站抓取。
菲宇
2019/06/13
1.2K0
爬虫系列(13)Scrapy 框架-CrawlSpider、图片管道以及下载中间件Middleware。
首先在说下Spider,它是所有爬虫的基类,而CrawSpiders就是Spider的派生类。对于设计原则是只爬取start_url列表中的网页,而从爬取的网页中获取link并继续爬取的工作CrawlSpider类更适合。
野原测试开发
2019/07/10
1.4K0
python scrapy 实战简书网站
1:创建项目 2:创建爬虫 3:编写start.py文件用于运行爬虫程序 # -*- coding:utf-8 -*- #作者: baikai #创建时间: 2018/12/14 14:09
py3study
2020/01/20
1.1K0
python scrapy 实战简书网站
CrawlSpider(规则爬虫)和Spider版爬虫
1.规则爬虫--scrapy genspider -t crawl Question wz.sun0769.com
用户2337871
2019/07/19
6100
Scrapy框架的使用之Scrapy通用爬虫
通过Scrapy,我们可以轻松地完成一个站点爬虫的编写。但如果抓取的站点量非常大,比如爬取各大媒体的新闻信息,多个Spider则可能包含很多重复代码。 如果我们将各个站点的Spider的公共部分保留下来,不同的部分提取出来作为单独的配置,如爬取规则、页面解析方式等抽离出来做成一个配置文件,那么我们在新增一个爬虫的时候,只需要实现这些网站的爬取规则和提取规则即可。 本节我们就来探究一下Scrapy通用爬虫的实现方法。 一、CrawlSpider 在实现通用爬虫之前,我们需要先了解一下CrawlSpider
崔庆才
2018/06/25
2.6K0
推荐阅读
相关推荐
拥有了这个, 天下的美图都是你的!!!
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文