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免费学习资料以及群交流解答点击即可加入

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你提供一个简单的Scrapy爬取当当网的示例代码。 首先,需要在终端或命令行安装Scrapy:`pip install scrapy` 然后,可以创建一个新的Scrapy项目:`scrapy startproject dangdang` 在项目的根目录下,打开`settings.py`文件,并添加如下内容: ``` ROBOTSTXT_OBEY = False DOWNLOAD_DELAY = 2 USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' ``` 这里的作用是告诉Scrapy不要遵守Robots协议,设置下载延迟为2秒,以及设置用户代理。 接下来,在项目的根目录下,创建一个新的Spider:`scrapy genspider dangdang_spider dangdang.com` 打开`dangdang_spider.py`文件,并添加如下内容: ``` import scrapy class DangdangSpider(scrapy.Spider): name = "dangdang" allowed_domains = ["dangdang.com"] start_urls = ["http://category.dangdang.com/cp01.00.00.00.00.00.html"] def parse(self, response): for sel in response.xpath('//ul[@class="bigimg"]/li'): item = {} item['title'] = sel.xpath('a/@title').extract()[0] item['link'] = sel.xpath('a/@href').extract()[0] item['price'] = sel.xpath('p[@class="price"]/span[@class="search_now_price"]/text()').extract()[0] yield item ``` 这里的作用是定义一个Spider,设置起始url为当当网首页,解析响应并提取商品的标题、链接和价格信息。 最后,在终端或命令行执行如下命令即可启动爬虫并将结果保存到一个JSON文件:`scrapy crawl dangdang -o dangdang.json` 这是一个简单的示例代码,你可以根据自己的需要进行更改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值