您的位置:首页 > 数据库 > MySQL

【项目实战】使用Scrapy爬取商品信息并写入MySQL数据库

2018-01-31 10:57 921 查看
  这个项目写了三天,其中遇到了无数的坑,该项目的目标是爬取当当网上某类书的书名、链接和评论数,并写入数据库,以下是步骤。

1.先创建一个项目,在终端里输入:

scrapy startproject dangdang
2.并在该项目下,创建一个爬虫文件

cd dangdang
scrapy genspider -t basi
4000
c dd dangdang.com


3.要爬取商品的书名、链接和评论,在items.py中创建三个容器

import scrapy

class DangdangItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
title = scrapy.Field()
link = scrapy.Field()
comment = scrapy.Field()


4.在爬虫文件dd.py中,导入DangdangItem,使用xpath表达式提取信息,在for循环使用回调函数,反复调用self.parse方法

import scrapy
from dangdang.items import DangdangItem

class DdSpider(scrapy.Spider):
name = 'dd'
allowed_domains = ['dangdang.com']
start_urls = ['http://www.dangdang.com/']

def parse(self, response):
item = DangdangItem()
item["title"] = response.xpath('//a[@class="pic"]/@title').extract()
item["link"] = response.xpath('//a[@class="pic"]/@href').extract()
item["comment"] = response.xpath('//a[@name="itemlist-review"]/text()').extract()
yield item

for i in range(2,10):
url = "http://category.dangdang.com/pg" + str(i) + "-cp01.54.06.00.00.00.html"
yield Request(url,callback=self.parse)
4.在MySQL中创建一个数据库。

mysql>create database dd;
mysql>use dd;
mysql>create table books(title,link,comment) values(title char(100) primary key,link char(100) unique,comment int(20));


5.在pipelines.py文件中进行数据处理,并写入数据库。

import pymysql

class DangdangPipeline(object):
def process_item(self, item, spider):
conn = pymysql.connect("127.0.0.1",user="root",passwd="newpass",db="dd",charset="utf8")
cursor = conn.cursor()
for i in range(0,len(item["title"])):
title=item["title"][i]
link=item["link"][i]
comment=item["comment"][i]
sql="insert into books(title,link,commment) values('"+title+"','"+link+"','"+comment+"')"
cursor.execute(sql)
conn.commit()
conn.close()
return item
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐