使用scrapy爬蟲框架對豆瓣圖書搜尋結果進行爬取
scrapy是乙個為了爬取**資料,提取結構性資料而編寫的應用框架
可以應用在包括資料探勘,資訊處理或儲存歷史資料等一系列的程式
它提供了多種型別爬蟲的基類,如basespider、crawlspider等
scrapy框架主要由五大元件組成
排程器(scheduler)爬蟲(spider)
爬蟲,是使用者最關心的部份。使用者定製自己的爬蟲(通過定製正規表示式等語法),用於從特定的網頁中提取自己需要的資訊,即所謂的實體(item)。 使用者也可以從中提取出鏈結,讓scrapy繼續抓取下乙個頁面
實體管道(item pipeline)
實體管道,用於處理爬蟲(spider)提取的實體(item)
主要的功能是持久化實體、驗證實體的有效性、清除不需要的資訊
scrapy引擎(scrapy engine)
scrapy中的資料流由執行引擎控制,其過程如下:
引擎開啟乙個**,找到處理該**的spider並向該spider請求第乙個要爬取的url(s)
引擎從spider中獲取到第乙個要爬取的url並在排程器(scheduler)以request排程
引擎向排程器請求下乙個要爬取的url
spider處理response並返回爬取到的item及(跟進的)新的request給引擎
引擎將(spider返回的)爬取到的item給item pipeline,將(spider返回的)request給排程器
建立專案通過命令scrapy startproject ***
建立爬蟲scrapy genspider ***(爬蟲名) ***.com (爬取域)
生成檔案scrapy crawl *** -o ***.json (生成json/csv檔案)
執行爬蟲scrapy crawl ***
列出所有爬蟲
scrapy list
scrapy startproject tutorial
建立乙個新的專案tutorial
將會建立包含下列內容的tutorial
目錄
分析tutorial/
scrapy.cfg # 專案的配置檔案
tutorial/
# 該項目的python模組之後將在此加入**
__init__.py
items.py # 專案中的item檔案
pipelines.py # 專案中的pipelines檔案
settings.py # 專案的設定檔案
spiders/
# 放置spider**的目錄
__init__.py...
search_text 搜尋關鍵字
cat 搜尋類別
start 開始的條數
url規則可以適用到圖書電影搜尋頁面,後面的爬取也一樣
於是直接給出大佬的鏈結豆瓣讀書搜尋頁的window.__data__的解密
解決了這個問題其他的就很好爬取了
完整**見github倉庫
提取出的js在third_party/main.js
爬蟲框架scrapy個人總結(詳細)熟悉class
doubanbooksearchspider
(scrapy.spider)
: name =
'douban_book_search'
allowed_domains =
['douban.com'
]def
__init__
(self,keyword=
none
,start=
none
,*args,
**kwargs)
:super
(doubanbooksearchspider, self)
.__init__(
*args,
**kwargs)
self.keyword = keyword
self.start = start
)def
parse
(self, response)
: r = re.search(
'window.__data__ = "([^"]+)"'
, response.text)
.group(1)
# 匯入js
file_path = pathlib.path.cwd()/
'third_party/main.js'
with
open
(file_path,
'r', encoding=
'gbk'
)as f:
decrypt_js = f.read(
) ctx = execjs.
compile
(decrypt_js)
data = ctx.call(
'decrypt'
, r)
for item in data[
'payload'][
'items']:
if item.get(
'rating'
,none):
cover_url = item[
'cover_url'
] score = item[
'rating'][
'value'
] score_num = item[
'rating'][
'count'
] url = item[
'url'
] abstract = item[
'abstract'
] title = item[
'title']id
= item[
'id'
]yield doubanbooksearchitem(
cover_url=cover_url,
score=score,
score_num=score_num,
url=url,
abstract=abstract,
title=title,id=
id)
架構概覽
scrapy爬蟲框架,入門案例(非常詳細)
豆瓣讀書搜尋頁的window.__data__的解密
python爬蟲之scrapy爬取豆瓣電影(練習)
開發環境 windows pycharm mongodb scrapy 任務目標 任務目標 爬取 豆瓣電影top250 將資料儲存到mongodb中。items.py檔案 coding utf 8 define here the models for your scraped items see d...
Scrapy框架抓取豆瓣電影的小爬蟲學習日記(三)
獲取到影片資訊之後,下一步就是要把獲取到的資訊進行儲存了。網上很多的案例都是儲存成json格式,這裡我想用mysql伺服器來儲存。1 首先安裝好mysql資料庫,建好filminfo表和字段。2 在items.py檔案中新增你需要儲存到資料庫中的資訊,定義相對應的class,生成item類物件。cl...
爬蟲教程 用Scrapy爬取豆瓣TOP250
文章首發於 guanngxu 的個人部落格 用scrapy爬取豆瓣top250 最好的學習方式就是輸入之後再輸出,分享乙個自己學習scrapy框架的小案例,方便快速的掌握使用scrapy的基本方法。本想從零開始寫乙個用scrapy爬取教程,但是官方已經有了樣例,一想已經有了,還是不寫了,盡量分享在網...