用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源创计划”,欢迎正在阅读的你也加入,一块儿分享。