用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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。