我的第一个Scrapy 程序 - 爬取当当网信息
前面已经安装了Scrapy,下面来实现第一个测试程序。
概述
Scrapy是一个爬虫框架,他的基本流程如下所示(下面截图来自互联网)
简单的说,我们需要写一个item文件,定义返回的数据结构;写一个spider文件,具体爬取的数据程序,以及一个管道 pipeline 文件,作为后续操作,比如保存数据等等。
下面以当当网为例,看看怎么实现。
这个例子里面我想爬取的内容是前面20页的羽绒服产品,包括产品名字,链接和评论数。
过程
1. 创建一个Scrapy的项目
scrapy startproject dangdang
2. 创建一个爬虫文件**
scrapy genspider -t basic dd dangdang.com
这样他会自动创建一个爬虫文件,结构如下所示:
3. 编写items.py
items.py
# -*- coding: utf-8 -*-# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyclass DangdangItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()title=scrapy.Field()url=scrapy.Field()comment=scrapy.Field()
4. 编写爬虫文件dd.py
前面第二步已经自动生成了一个模板,我们直接修改就行。
dd.py
# -*- coding: utf-8 -*-import scrapy
from dangdang.items import DangdangItem
from scrapy.http import Requestclass DdSpider(scrapy.Spider):name = 'dd'allowed_domains = ['dangdang.com']start_urls = ['http://category.dangdang.com/pg1-cid4010275.html']def parse(self, response):item=DangdangItem()item['title']=response.xpath(u"//a[@dd_name='单品标题']/text()").extract()item['url']=response.xpath("//a[@dd_name='单品标题']/@href").extract()item['comment']=response.xpath("//a[@dd_name='单品评论']/text()").extract()text = response.body# content_type = chardet.detect(text)# if content_type['encoding'] != 'UTF-8':# text = text.decode(content_type['encoding'])# text = text.encode('utf-8')# print(text)yield itemfor i in range(2,20):url='http://category.dangdang.com/pg%d-cid4010275.html'%iyield Request(url,callback=self.parse)
5. 编写pipelines.py
为了使用pipeline,配置文件需要做个小修改,我顺便关掉了对robot文件的确认
settings.py
ROBOTSTXT_OBEY = FalseITEM_PIPELINES = {'dangdang.pipelines.DangdangPipeline': 300,
}
pipeline.py
# -*- coding: utf-8 -*-# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
import pymysqlclass DangdangPipeline(object):def process_item(self, item, spider):conn=pymysql.connect(host='127.0.0.1',user='root',passwd='root',db='dangdang',use_unicode=True,charset='utf8')for i in range(0,len(item['title'])):title=item['title'][i]link=item['url'][i]comment=item['comment'][i]print(type(title))print(title)# sql="insert into dd(title,link,comment) values ('"+title+"','"+link+"','"+comment+"')"sql = "insert into dd(title,link,comment) values('" + title + "','" + link + "','" + comment + "')"try:conn.query(sql)except Exception as err:passconn.close()return item
6. 创建数据库和表
我最后的数据要保存到mysql里面,python里面可以通过pymysql进行操作。我提前在mysql命令行界面里面创建了一个数据库和空表
mysql> create database dangdang;
mysql> create table dd(id int auto_increment primary, title varchar(100), link varchar(100), comment varchar(32));
7. 执行
scrapy crawl dd
如果不想看日志 可以使用
scrapy crawl dd --nolog
8. 检测结果
test.py
#!/usr/bin/env python
#! -*- coding:utf-8 -*-
# Author: Yuan Li
import pymysql
conn=pymysql.connect(host='127.0.0.1',user='root',passwd='root',db='dangdang',use_unicode=True,charset='utf8')cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
#SQL查询
cursor.execute("select * from dd")
row=cursor.fetchall()
for i in row:print(i)
conn.close()
结果测试成功
转载于:https://blog.51cto.com/beanxyz/2069239
我的第一个Scrapy 程序 - 爬取当当网信息相关推荐
- Python爬虫实战+Scrapy框架 爬取当当网图书信息
1.环境准备 1.在python虚拟环境终端使用 pip install scrapy下载scrapy依赖库 2.使用scrapy startproject book创建scrapy心目工程 3.使用 ...
- Scrapy爬虫之爬取当当网图书畅销榜
本次将会使用Scrapy来爬取当当网的图书畅销榜,其网页截图如下: 我们的爬虫将会把每本书的排名,书名,作者,出版社,价格以及评论数爬取出来,并保存为csv格式的文件.项目的具体创建就不再多讲 ...
- 请用Python写一个爬虫程序,爬取当当网图书畅销榜数据
好的,下面是一个简单的 Python 爬虫代码,可以爬取当当网图书畅销榜数据: import requests from bs4 import BeautifulSoupurl = "htt ...
- 小白scrapy试炼-爬取慕课网免费课程
本文参考博客: scrapy爬虫-爬取慕课网全部课程 scrapy爬虫框架入门实例 准备工作: anaconda(为了简单安装scrapy) 安装scrapy的方法有好多种,原来在pip上花了挺多时间 ...
- Scrapy爬取当当网图书销售前100
scrapy爬取当当网图书畅销榜 一.采集任务 爬取当当网图书畅销榜信息,获取热销图书前500相关数据. 二.网页解析 1. 打开当当网,按照图书榜>图书畅销榜 进入当当网图书畅销榜[http: ...
- Scrapy爬取当当网的商品信息存到MySQL数据库
Scrapy爬取当当网的商品信息存到MySQL数据库 Scrapy 是一款十分强大的爬虫框架,能够快速简单地爬取网页,存到你想要的位置.经过两天的摸索,终于搞定了一个小任务,将当当网的商品信息爬下来存 ...
- scrapy框架的简单使用——爬取当当网图书信息
** Scrapy爬取当当网图书信息实例 --以警察局办案为类比 ** 使用Scrapy进行信息爬取的过程看起来十分的复杂,但是他的操作方式与警局办案十分的相似,那么接下来我们就以故事的形式开始Scr ...
- python实战|用scrapy爬取当当网数据
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进击者 ( 想要学习Python?Pyth ...
- 【python爬虫02】使用Scrapy框架爬取拉勾网招聘信息
使用Scrapy框架爬取拉勾网招聘信息 最近接触了Scrapy爬虫框架,简单写了个爬虫爬取拉钩网的招聘信息,加深对Scrapy框架的理解,不得不说Scrapy框架其实还是蛮方便的,就像爬虫流水线一样, ...
最新文章
- 看阿里高手使用Jmeter做功能测试的优缺点
- java dbtype_Java实现数据库的读写分离
- JavaScript实现唯一路径问题的动态编程方法的算法(附完整源码)
- 电脑组装笔记:手把手教你如何自己组装电脑
- gcc compiler warning: “will be initialized after/when initialized here”
- python程序设计方法_Python程序设计现代方法
- 在系统二进制文件中检测到错误_门禁管理系统施工中常见的布线错误
- 设计模式:000设计模式与面向对象介绍
- 数学建模:方差分析模型
- linux pulseaudio卸载,解决Ubuntu 9.04 下 PulseAudio声音故障
- html怎么设置内存当缓存,前端浏览器缓存怎么使用
- 控制教程 —— 巡航控制篇:2.PID控制器设计
- HTTP 的前世今生
- 建网站一年经验分享:做网站前的准备和推广经验
- pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pym
- ADAS系统传感器应该如何布置
- Matlab 2020a 调用usb3.0摄像头实例
- 【调剂】浙江工业大学信息工程学院宣琦课题组诚招2020级研究生
- 九大数据分析方法:矩阵分析法
- 教你设置晨曦记账本登录加载本月账目,及时间显示模式