从实体书店获取书籍信息(ISBN或搜索)。
项目描述
网络爬取以获取书籍信息
这个库用于获取书籍信息。我们可以使用 关键词、使用 ISBN、使用 高级搜索 和进行 分页 来搜索。
我们从现有网站获取数据。我们爬取
法国书籍,http://www.librairie-de-paris.fr(Decitre也适用,但内容不太完整)
我们获取:标题和作者,价格,出版社,封面等
从ods或csv文件导入数据
此库的另一个目标是轻松获取您在ods或csv文件中列出的大量书籍。
如果您的文件有“isbn”和“数量”列,则非常简单,我们将找到所有书籍信息。
如果它只有标题和出版社,则可行但容易出错。我们仍然可以这样做,但您之后需要进行库存盘点。
查看odsimport模块。它会返回JSON。您需要在数据库中添加您想要的内容(这在Abelujo中进行,请访问https://gitlab.com/vindarel/abelujo)。
可用,但仍在开发中。
接受的格式和列
我们可以读取ods和csv文件。
包含“isbn”和“数量”列的文件,
包含“标题”、“出版社”、“isbn”(在这种情况下为可选),“书架”、“发行商”、“数量”列的文件。没有“价格”列。“作者”是可选的(它可以帮助找到正确的书籍)。
如果文件没有标题,请使用“odsettings.py”配置文件(特别是,设置csv分隔符为“,”或“;”)。
为什么不选择亚马逊?
亚马逊扼杀了图书行业及其员工。但更重要的是,我们可以为我们的结果增加价值。我们可以在我们的应用程序内部链接到一个好书店,我们可以从它那里订购书籍,我们可以说明它是否有库存,等等。而且…我们在做这件事的过程中学到了很多!
从技术上来说,亚马逊API网络服务可能过于限制性,并不合适。必须注册亚马逊产品广告和AWS,并且请求速率限制为每秒1次。
为什么不选择谷歌图书?
数据非常少。
为什么不选择法国国家图书馆(BNF)?
因为,对于书店,我们需要最新的书籍(它们在BNF数据库中进入后几个月),需要最新信息。工具也很少。
安装
从pypi安装
pip install bookshops
使用
命令行
您可以在命令行上使用以下命令尝试此库:- livres:法语书籍 - libros:西班牙语书籍 - bucher:德语书籍 - 来要求更多:)
例如
livres antigone
或
livres 9782918059363
然后您会看到上面的截图。
选项:(这可能因爬虫而异,请使用-h) - -i 或 --isbn 确保获取所有isbn。命令行工具默认不会获取它们,因为它们需要针对每本书进行另一个HTTP请求。这取决于网站。
作为库
但最重要的是,在您的程序内部
from bookshops.frFR.librairiedeparis.librairiedeparisScraper import Scraper as frenchScraper scraper = frenchScraper("search keywords") cards = scraper.search() # we get a list of dictionnaries with the title, the authors, etc.
高级搜索
仍在开发中。
您可以使用ed:agone搜索特定的出版社。
分页
我们进行分页。
scraper = frenchScraper("search keywords", PAGE=2)
开发和测试
请参阅http://dev.abelujo.cc/webscraping.html
开发模式
pip install -e .
现在您可以编辑项目并运行开发版本,就像库打算运行的那样,即使用entry_points:livres,libros,等等。
错误和不足
这是网络爬虫,所以它不会没有陷阱
网站可能会关闭。这已经发生了。
网站可能会更改,在这种情况下,我们可能需要更改我们的爬虫。这可以通过自动和频繁的测试提前捕获(正在进行中)。
变更日志
0.2.1
德语爬虫:通过isbn搜索
0.2.0
德语爬虫
德语爬虫的进程池(从15秒到9秒)(见问题#1)
为它添加了--isbn选项
0.1.x
法语、西班牙语爬虫
命令行工具
许可证
LGPLv3
项目详情
bookshops-0.2.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fceea12cb8f518d70e1dedd9dbe239b85cd04817fc0f7305514029ef03b22fe3 |
|
MD5 | 96592aead7102c02e74e2cd4ed7ce105 |
|
BLAKE2b-256 | 0519c0834038edd74b247caf01d7885499a22cf470e2d0e9df8206db28825a53 |