Scrapy爬取当当网畅销图书保存csv格式!最详细的教程!

142 篇文章 4 订阅

初步了解scrapy框架爬虫的使用。

 

前言:

 

需要安装一下第三方库
在win下
pip install scrapy
pip install bs4
在mac下把pip改成pip3即可

一、创建scrapy项目

在cmd运行里输入(随便找个盘) scrapy startproject dangdang

 

 

如上图创建成功,接下来在编译器中打开文件

 

这些文件都是自动生成的 来解释说明一下部分文件

 

 

二、代码实现——编辑爬虫

——1.

接下来创建爬虫项目book.py(注意在spiders文件夹下创建)

 

在book.py里填写爬虫代码

import scrapy
import bs4
from ..items import DangdangItem
# 需要引用DangdangItem,它在items里面。因为是items在book.py的上一级目录,..items这是一个固定用法。
class DangdangSpider(scrapy.Spider): #定义一个爬虫类DoubanSpider。
    name = 'dangdang'
    allowed_domains = ['http://bang.dangdang.com']
    start_urls = []
    for x in range(1, 4):
        url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-year-2019-0-1-1' + str(x)
        start_urls.append(url)

    def parse(self, response): #parse是默认处理response的方法。
        soup = bs4.BeautifulSoup(response.text, 'html.parser')
        elements = soup.find('ul', class_="bang_list clearfix bang_list_mode").find_all('li')
        for element in elements:
            item = DangdangItem()
            item['name'] = element.find('div', class_="name").find('a')['title']
            item['author'] = element.find('div', class_="publisher_info").text
            item['price'] = element.find('div', class_="price").find('span', class_="price_n").text
            yield item#   #yield item是把获得的item传递给引擎。

——2. 修改两个文件

接下来打开setting.py文件修改请求头和爬虫协议

 

改成这样:(也就是取消遵守爬虫协议)

 

 

代码如下

Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = '~~Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'~~ (请求头改成自己的)
Obey robots.txt rules
ROBOTSTXT_OBEY = False

最后一步

打开item.py文件修改

 

 

添加以下参数:

name = scrapy.Field()
    author = scrapy.Field()
    price = scrapy.Field()

如图:

 

三、运行爬虫

创建main.py(通过这个运行整个爬虫程序)

 

 

我们需要知道在Scrapy中有一个可以控制终端命令的模块cmdline,能操控终端 但是此方法需要传入列表的参数。

填入:

from scrapy import cmdline
cmdline.execute(['scrapy','crawl','dangdang'])

运行这个main.py就成功了!

 

 

四、保存为csv文件

要是想把爬取内容以表格形式保存 三行代码就可以解决,这也是scrapy的方便之处。 打开settings.py文件,在末尾添加代码:

FEED_URI='./%(name)s.csv'
FEED_FORMAT='csv'
FEED_EXPORT_ENCODING='ansi'

 

看起来美观很多。

运行过程中可能会有各种报错,也是正常的,不要紧,一步步debug就会成功的。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值