python爬蟲框架feapde的使用簡介

2022-09-29 13:36:11 字數 4381 閱讀 1738

大家好,我是安果!

眾所周知,python 最流行的爬蟲框架是 scrapy,它主要用於爬取**結構性資料

今天推薦一款更加簡單、輕量級,且功能強大的爬蟲框架:feapder

專案位址:

和 scrapy 類似,feapder 支援輕量級爬蟲、分布式爬蟲、批次爬蟲、爬蟲報警機制等功能

內建的 3 種爬蟲如下:

輕量級爬蟲,適合簡單場景、資料量少的爬蟲

分布式爬蟲,基於 redis,適用於海量資料,並且支援斷點續爬、自動資料入庫等功能

分布式批次爬蟲,主要用於需要週期性採集的爬蟲

在實戰之前,我們在虛擬環境下安裝對應的依賴庫

# 安裝依賴庫

pip3&n程式設計客棧bsp;install feapder

我們以最簡單的 airspider 來爬取一些簡單的資料

目標**:ahr0chm6ly90b3bodwiudg9kyxkvia==

詳細實現步驟如下( 5 步)

首先,我們使用「 feapder create -p 」命令建立乙個爬蟲專案

# 建立乙個爬蟲專案

feapder create -p tophub_demo

命令列進入到 spiders 資料夾目錄下,使用「 feapder create -s 」命令建立乙個爬蟲

cd spiders

# 建立乙個輕量級爬蟲

feapder create -s tophub_spider 1

其中

以 mysql 為例,首先我們在資料庫中建立一張資料表

# 建立一張資料表

create table topic

(    id         int auto_increment

primary key,

title      varchar(100)  null comment '文章標題',

auth       varchar(20)   null comment '作者',

like_count     int default 0 null comment '喜歡數',

collection int default 0 null comment '數',

comment    int default 0 null comment '評論數'

);然後,開啟專案根目錄下的 settings.py 檔案,配置資料庫連線資訊

# settings.py

mysql_ip = "localhost"

mysql_port = 3306

mysql_db = "xag"

mysql_user_name = "root"

mysql_user_pass&nbswww.cppcns.comp;= "root"

最後,建立對映 item( 可選 )

進入到 items 資料夾,使用「 feapder create -i 」命令建立乙個檔案對映到資料庫

ps:由於 airspider 不支援資料自動入庫,所以這步不是必須

第一步,首先使「 mysqldb 」初始化資料庫

from feapder.db.mysqldb&nb mysqldb

class tophubspider(feapder.airspider):

def __i程式設計客棧nit__(self, *args, **kwargs):

super().__init__(*args, **kwargs)

self.db = mysqldb()

第二步,在 start_requests 方法中,指定爬取主鏈結位址,使用關鍵字「download_midware 」配置隨機 ua

import feapder

from fake_useragent import useragent

def start_requests(self):

yield feapder.request("", download_midware=self.download_midware)

def download_midware(self, request):

# 隨機ua

# 依賴:pip3 install fake_useragent

ua = useragent().random

request.headers = 

return request

第三步,爬取首頁標題、鏈結位址

使用 feapder 內建方法 xpath 去解析資料即可

def parse(self, request, response):

# print(response.text)

card_elements = response.xpath('//div[@class="cc-cd"]')

# 過濾出對應的卡片元素【什麼值得買】

buy_good_element = [card_element for card_element in card_elements if

card_element.xpath('.//div[@class="cc-cd-is"]//span/text()').extract_first() == '什麼值得買'][0]

程式設計客棧 # 獲取內部文章標題及位址

a_elements = buy_good_element.xpath('.//div[@class="cc-cd-cb nano"]//a')

for a_element in a_elements:

# 標題和鏈結

title = a_element.xpath('.//span[@class="t"]/text()').extract_first()

href = a_element.xpath('.//@href').extract_first()

# 再次下發新任務,並帶上文章標題

yield feapder.request(href, download_midware=self.download_midware, callback=self.parser_detail_page,

title=title)

第四步,爬取詳情頁面資料

上一步下發新的任務,通過關鍵字「 callback 」指定**函式,最後在 parser_detail_page 中對詳情頁面進行資料解析

def parser_detail_page(self, request, response):

"""解析文章詳情資料

:param request:

:param response:

:return:

"""title = request.title

url = request.url

# 解析文章詳情頁面,獲取點讚、、評論數目及作者名稱

author = response.xpath('//a[@class="author-title"]/text()').extract_first().strip()

print("作者:", author, '文章標題:', title, "位址:", url)

desc_elements = response.xpath('//span[@class="xilie"]/span')

print("desc數目:", len(desc_elements))

# 點讚

like_count = int(re.findall('\d+', desc_elements[1].xpath('./text()').extract_first())[0])

# collection_count = int(re.findall('\d+', desc_elements[2].xpath('./text()').extract_first())[0])

# 評論

comment_count = int(re.findall('\d+', desc_elements[3].xpath('./text()').extract_first())[0])

print("點讚:", like_count, ":", collection_count, "評論:", comment_count)

使用上面例項化的資料庫物件執行 sql,將資料插入到資料庫中即可

# 插入資料庫

sql = "insert into topic(title,auth,like_count,collection,comment) values('%s','%s','%s','%d','%d')" % (

title, author, like_count, collection_count, comment_count)

# 執行

self.db.execute(sql)

本篇文章通過乙個簡單的例項,聊到了 feapder 中最簡單的爬蟲 airspider

關於 feapder 高階功能的使用,後面我將會通過一系列例項進行詳細說明

原始碼位址:

Python爬蟲框架

一 u know!二 scrapy入門教程 三 網路爬蟲之scrapy框架詳解 四 scrapy編寫步驟 詳情見二 scrapy入門教程 1 mkdir乙個爬蟲資料夾 例 mkdir home zy pachong pa test 10 28 2 在 home zy pachong pa test ...

Python爬蟲 scrapy框架

開源的,對平台的爬蟲框架 舊版本 需要預先定義所需欄位 class myitem scrapy.item url scrapy.field 再將所需欄位填充 class myspier scrapy.spider defparse self,response return sudo apt inst...

python爬蟲scrapy框架

安裝 pip install scrapy startproject 建立乙個新專案 genspider 根據模板生成乙個新爬蟲 crawl 執行爬蟲 shell 啟動互動式抓取控制台 進入專案目錄 scrapy startproject crawlertest project name cd cr...