用Scrapy爬取当当网书籍信息

用Scrapy爬取当当网书籍信息

日期:2019-04-23 23:27:34 星期二html

项目流程

  • 肯定项目目标python

  • 建立Scrapy项目编程

  • 定义Item(数据)微信

  • 建立和编写Spider文件app

  • 修改Settings.py文件dom

  • 运行Scrapy爬虫scrapy

肯定项目目标

今天经过建立一个爬取当当网2018年图书销售榜单的项目来认识一下Scrapy的工做流程ide

当当连接:
"http://bang.dangdang.com/books/bestsellers/01.54.00.00.00.00-year-2018-0-1-1  "函数

目标:网站

  • 爬取前3页的数据

  • 爬取字段:图书名、做者和价格

建立Scrapy项目

首先要安装scrapy这个库,但这个安装很麻烦,很容易掉坑

我这里是用anaconda下载的,这种方式很方便

下载命令:pip install scrapy

用cmd命令打开命令行窗口,输入如下命令:

scrapy startproject dangdang

dangdang是项目的名称

到这里就建立好了咱们的dangdang项目

定义Item数据

打开items.py文件,并添加如下内容:

1import scrapy
2class DangdangItem(scrapy.Item): #继承scrapy.Item类 
3    name = scrapy.Field() #定义数据属性
4    author = scrapy.Field()
5    price = scrapy.Field()

建立和编写Spider文件

在spiders文件夹里面新建一个spider.py(本身命名的),编写爬去代码。
代码以下:

 1import scrapy
2from bs4 import BeautifulSoup
3from ..items import DangdangItem
4#..表明上层目录,由于如今spider文件夹,item在上层目录,而后导入DangdangItem模块
5class DangdangSpider(scrapy.Spider):
6#括号里须要有scrapy.Spider这个基类,这个基类里面包含不少属性和方法供咱们使用
7    name = "dangdang" #项目名字,待会运行爬虫时要用到
8    allow_domains = ["http://bang.dangdang.com"
9    #容许爬取的域名,能够准肯定位,防止跳到其它广告
10    start_urls = [] 
11    for num in range(1,4): #获取前三页的连接
12        url = f"http://bang.dangdang.com/books/bestsellers/01.54.00.00.00.00-year-2018-0-1-{num}"
13        start_urls.append(url)
14
15    def parse(self,reponse): #解析并提取数据的函数
16        soup = BeautifulSoup(reponse.text,"html.parser")
17        tag_ul = soup.find("ul",class_="bang_list clearfix bang_list_mode")
18        tags_li = tag_ul.find_all("li")
19        for tag in tags_li:
20            item = DangdangItem() #建立一个item对象,用来处理和传输数据
21            item["name"] =tag.find("div",class_="name").find("a").text
22            item["author"]=tag.find("div",class_="publisher_info").find("a").text 
23            item["price"] = tag.find("span",class_="price_n").text
24            print(item["name"])
25            print("="*40)
26            yield item

**修改Settings.py文件 **

爬虫已经写好后还须要去settings.py文件里面修改一些内容

1USER_AGENT = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36' #假装爬虫
2
3ROBOTSTXT_OBEY = False 
4#有些网站的robots.txt规定是不容许爬取的,设置为True,scrapy就能够无视这个规定

运行Scrapy文件

用cmd打开命令窗口,输入如下命令便可开始运行程序

scrapy crawl dangdang

本文尚未对数据进行存储,若是须要如何存储数据,能够加我私聊

或者扫码进群与朋友们进行交流

以为个人文章对你有帮助的话,请分享给更多的人

谢谢观看~



本文分享自微信公众号 - 佛系编程人(py520llj)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索