feapder框架学习(一)
官方文档:https://feapder.com/
1 安装
pip install “feapder[all]”
2 创建项目
feapder create -p FeapderDemo
3.1 轻量爬虫 AirSpider
在spiders目录下执行
feapder create -s air_spider_test
选择第一个爬虫模板,在spiders包下生成air_spider_test.py文件
3.2 demo
网站: https://ssr1.scrape.center/
完整代码
import feapder
class AirSpiderMovies(feapder.AirSpider):
def start_requests(self):
# 不指定callback,默认回调parse方法解析
yield feapder.Request("https://ssr1.scrape.center/page/1")
def parse(self, request, response):
divs = response.xpath('//div[@class="el-col el-col-18 el-col-offset-3"]/div')
for div in divs:
name = div.xpath('.//h2/text()').extract_first()
detail_url = div.xpath('.//div[@class="el-row"]/div[1]/a/@href').extract_first()
# 传参使用meta=dict的方式,不一定是meta,只要避免和内置的关键字参数一样,都可以
# 也可以使用key=value的方式传递
# yield feapder.Request(detail_url, callback=self.parse_list, name=name)
# yield feapder.Request(detail_url, callback=self.parse_list, d={'name': name})
yield feapder.Request(detail_url, callback=self.parse_list, meta={'name': name})
def parse_list(self, request, response):
score = response.xpath('//div[@class="el-col el-col-24 el-col-xs-8 el-col-sm-4"]/p[1]/text()').extract_first()
# 使用request对象获取传递的值
# name = request.name
# name = request.d.get('name')
name = request.meta.get('name')
print(name, '=====', score)
if __name__ == "__main__":
AirSpiderMovies().start()
3.3 运行爬虫
-
脚本运行
python air_spider_movies.py
-
命令行运行
修改main.py文件
from feapder import ArgumentParser from spiders import * def crawl_movie(): """ AirSpider爬虫 """ spider = air_spider_movies.AirSpiderMovies() spider.start() if __name__ == "__main__": parser = ArgumentParser(description="电影爬虫") parser.add_argument( "--crawl_movies", action="store_true", help="xxx爬虫", function=crawl_movie ) parser.start()
python main.py --crawl_movie