使用scrapy框架做赶集网爬虫

一、安装

首先scrapy的安装之前需要安装这个模块:wheel、lxml、Twisted、pywin32,最后在安装scrapy

pip install wheel
pip install lxml
这个地址是一个下载python包的好地方
https://www.lfd.uci.edu/~gohlke/pythonlibs/下载twisted
pip install Twisted
pip install pywin32
pip install scrapy 安装完成后
输入scrapy 能够执行,并能提示版本,说明安装没问题

二、Scrapy项目的创建

1、在前面输入 scrapy 的时候有个选项是 startproject,这个选项是创建scrapy项目,我们在命令提示符中输入:

scrapy startproject zufang (zufang是项目名称)

2、打开pycharm-->file-->open 找到建好的项目,显示项目结构

init.py 保持默认,不修改

items.py 保存爬取到的数据的容器

middlewares.py 中间件配置文件

settings.py 项目的设置文件,延迟等。

pipelines.py 项目管道文件,对传入的项目类中的数据进行一个清理和入库

spiders目录 该目录下只有一个init.py 文件,在该目录下定义爬虫类并集成scrapy.Spider

scrapy genspider ganji tj.ganji.com 前一个是py文件名名后一个是要爬取的url

生成一个ganji.py文件

三、创建数据库

1、pycharm下方的Terminal输入

python

    import sqlite3
zufang=sqlite3.connect("zufang.sqlite")
createtable="create table zufang(title varchar(512),money varchar(128))"
zufang.execute(createtable);
2、完成创建数据库和表
3、按住这个文件拖动到右侧的Database中

四、修改代码

1、在ganji.py中配置需要访问的域名和要爬取的url

        # -*- coding: utf-8 -*-
from zufang.items import *
import scrapy class GanjiSpider(scrapy.Spider):
name = 'zufang'
allowed_domains = ['tj.ganji.com']
start_urls = ['http://tj.ganji.com/fang1/chaoyang/'] def parse(self, response):
print(response)
zf = ZufangItem()
allrawpriceList=response.xpath('//div/dl/dd[5]//div/span[1]/text()').extract()
allrawtitleList = response.xpath('//*[@class ="f-list-item ershoufang-list"]/dl/dd[1]/a/text()').extract()
for title, price in zip(allrawtitleList, allrawpriceList):
zf["title"] = title;
zf["money"] = price
yield zf
2、item.py修改代码
import scrapy class ZufangItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
title = scrapy.Field();
money = scrapy.Field();
3、pipeline.py修改代码
import sqlite3 class ZufangPipeline(object):
def process_item(self, item, spider):
print(spider.name, "Spider pipeline")
return item def open_spider(self, spider):
self.con = sqlite3.connect("zufang.sqlite")
self.cn = self.con.cursor() def process_item(self, item, spider):
print(item)
insert_sql = 'insert into zufang(title, money) values("{}", "{}")'.format(item["title"], item["money"])
# insert_sql = 'insert into zufang(title, money) values("{}", "{}")'.format("title", 2500)
print(insert_sql)
self.cn.execute(insert_sql)
self.con.commit()
return item def spider_close(self, spider):
self.con.close()
4、setting.py中修改使pipeline生效
ITEM_PIPELINES = {
'zufang.pipelines.ZufangPipeline': 300,
}

五、执行爬虫 (项目目录下执行)退到与工程同一目录下:

scrapy crawl zufang

使用scrapy框架做赶集网爬虫的更多相关文章

  1. 基于Scrapy框架的Python新闻爬虫

    概述 该项目是基于Scrapy框架的Python新闻爬虫,能够爬取网易,搜狐,凤凰和澎湃网站上的新闻,将标题,内容,评论,时间等内容整理并保存到本地 详细 代码下载:http://www.demoda ...

  2. 使用scrapy框架爬取图片网全站图片(二十多万张),并打包成exe可执行文件

    目标网站:https://www.mn52.com/ 本文代码已上传至git和百度网盘,链接分享在文末 网站概览 目标,使用scrapy框架抓取全部图片并分类保存到本地. 1.创建scrapy项目 s ...

  3. Scrapy框架实战-妹子图爬虫

    Scrapy这个成熟的爬虫框架,用起来之后发现并没有想象中的那么难.即便是在一些小型的项目上,用scrapy甚至比用requests.urllib.urllib2更方便,简单,效率也更高.废话不多说, ...

  4. scrapy框架解读--深入理解爬虫原理

    scrapy框架结构图: 组成部分介绍: Scrapy Engine: 负责组件之间数据的流转,当某个动作发生时触发事件 Scheduler: 接收requests,并把他们入队,以便后续的调度 Do ...

  5. Scrapy模拟登录赶集网

    1.打开赶集网登录界面,先模拟登录并抓包,获得post请求的request参数 2. 我们只需构造出上面的参数传入formdata即可 参数分析: setcookie:为自动登录所传的值,不勾选时默认 ...

  6. 使用scrapy框架做武林中文网的爬虫

    一.安装 首先scrapy的安装之前需要安装这个模块:wheel.lxml.Twisted.pywin32,最后在安装scrapy pip install wheel pip install lxml ...

  7. Golang框架beego电影网爬虫小试牛刀

    学习了一段时间golang,又参考课程学习了beego开发网站爬虫,项目的目录结构是: 采集的目标是豆瓣网电影,入口地址是:https://movie.douban.com/subject/19008 ...

  8. 基于Scrapy框架的增量式爬虫

    概述 概念:监测 核心技术:去重 基于 redis 的一个去重 适合使用增量式的网站: 基于深度爬取的 对爬取过的页面url进行一个记录(记录表) 基于非深度爬取的 记录表:爬取过的数据对应的数据指纹 ...

  9. 网络爬虫第五章之Scrapy框架

    第一节:Scrapy框架架构 Scrapy框架介绍 写一个爬虫,需要做很多的事情.比如:发送网络请求.数据解析.数据存储.反反爬虫机制(更换ip代理.设置请求头等).异步请求等.这些工作如果每次都要自 ...

随机推荐

  1. 小福bbs-冲刺总结

    [小福bbs-冲刺总结] 这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 冲刺总结 作业的正文 小福bbs-冲刺总结 其他参考文献 面向百度和 ...

  2. JS 读取 获取 cookie

    alert(document.cookie); cookie 只能获取当前域名的cookie, 该页面的其他域名的获取不了的.

  3. NPAPI绘图和事件处理

    https://developer.mozilla.org/en-US/docs/Plugins/Guide/Drawing_and_Event_Handling 本章介绍如何确定插件实例是窗口化还是 ...

  4. Shell脚本——make命令和Makefile文件【转】

    https://blog.csdn.net/twc829/article/details/72729799 make命令是一个常用的编译命令,尤其在C/C++开发中,make命令通过makefile文 ...

  5. 苹果IPhone真机开发调试

    需要 在苹果开发网站 加入真机的UDID, 并在Profile中勾选该手机

  6. Unity3d 错误提示 GUI Error: You are pushing more GUIClips than you are popping. Make sure they are balanced

    程序出現這個問題的話,程序編譯時正確,運行時報錯,而且沒有報出是哪個代碼文件出處. 這個問題一般首先去檢查Level內有用到OnGUI,Debug結果發現某代碼文件在調試代碼時複製多了一行GUILay ...

  7. PrivateIpAddresses Array of String 实例主网卡的内网IP列表。 PublicIpAddresses Array of String 实例主网卡的公网IP列表。 注意:此字段可能返回 null,表示取不到有效值。

    https://cloud.tencent.com/document/api/213/15753 浮动 IP 地址 https://cloud.google.com/solutions/best-pr ...

  8. 前端性能测试工具 : dynaTrace Ajax (还没写完)

    今天开始写这个工具, #什么是dynaTrace Ajax? 随着 jQuery.Dojo.YUI 等框架的兴起让构建 Web2.0 应用更加容易,但随之带来的定位等应用问题也越来越难,尤其是与性能相 ...

  9. CSS清除浮动方法集合

    CSS清除浮动方法集合 一.浮动产生原因   -   TOP 一般浮动是什么情况呢?一般是一个盒子里使用了CSS float浮动属性,导致父级对象盒子不能被撑开,这样CSS float浮动就产生了. ...

  10. Java基础 hello world基础实例

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...