初步了解scrapy框架爬蟲的使用,

前言:
需要安裝一下第三方庫
在win下
pip install scrapy
pip install bs4
在mac下把pip改成pip3即可
文章目錄
- 一、創建scrapy專案
- 二、代碼實作——編輯爬蟲
- ——1.
- ——2. 修改兩個檔案
- 三、運行爬蟲
- 四、保存為csv檔案
一、創建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就會成功的,
謝謝支持~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/229869.html
標籤:python
上一篇:機器學習 特征選擇篇——python實作MIC(最大資訊系數)計算
下一篇:爬蟲百戰穿山甲(三)


