python - 如何根据文件扩展名在bs4汤中设置过滤器?
问题描述
我成功编写了 python 中的 beautiful soup4从wiki 类别中获取每个文件详细信息。该类别包含.jpg
和.pdf
文件扩展名。我如何过滤以仅获取 pdf 文件的详细信息?
编码 ;-
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
rUrl = u'https://commons.wikimedia.org/wiki/Category:பண்டிதர் க. அயோத்திதாசர்'
#getting all the data from above the category url
rData = requests.get(rUrl)
soup = BeautifulSoup(rData.content, 'lxml')
#getting files name only
for item in soup.find_all('div', class_='gallerytext'):
fileTags = item.a
print(fileTags.text)
#getting pdfs name only
它的输出;-
Oru paisa tamilan 1.jpg
Oru paisa tamilan 2.jpg
ஒரு பூர்வ பௌத்தனின் சாட்சியம்-அயோத்திதாசரின் சொல்லாடல்.pdf
க. அயோத்திதாஸப் பண்டிதர் சிந்தனைகள்-1.pdf
க. அயோத்திதாஸப் பண்டிதர் சிந்தனைகள்-2.pdf
க. அயோத்திதாஸப் பண்டிதர் சிந்தனைகள்-4.pdf
க. அயோத்திதாஸப் பண்டிதர் சிந்தனைகள்-அரசியல்-சமூகம்.pdf
பண்டிதரின் கொடை-விகிதாச்சார உரிமை எனும் சமூகநீதிக் கொள்கை.pdf
如何只过滤pdf文件?
解决方案
试试这个只获取 pdf 链接。我曾经selector
让解析器专注于那些最终有这个的链接.pdf
。
import requests
from bs4 import BeautifulSoup
rUrl = 'https://commons.wikimedia.org/wiki/Category:பண்டிதர் க. அயோத்திதாசர்'
rData = requests.get(rUrl)
soup = BeautifulSoup(rData.content, 'lxml')
for item in soup.select(".gallerytext a[href$='.pdf']"):
print(item['href'])
或不使用selector
:
for item in soup.find_all(class_="galleryfilename"):
if ".pdf" in item.get('href'):
print(item['href'])
推荐阅读
- python - Kubernetes 集群中使用 Python 套接字的服务器-客户端连接
- c# - ASP.NET Core - IServiceProvider 何时处置?
- docker - 在 Container-Optimized OS 中保存持久性可执行文件的位置
- python - 计数符号更改
- sql - 对于类目录应用程序,如何避免使用多个多对多联结的多个 SQL 联结
- c# - 如何修复 Visual Studio 2022 警告 CA1416“所有平台均可访问的呼叫站点”但“仅支持:'windows'”?
- go - vscode中的调试不会在断点处停止,调试器启动时会说“找不到文件...”
- swift - 当 api 响应模型数据为零时,即使使用 if let 语句,应用程序也会崩溃
- javascript - 检查机器人启动前发送的消息的新反应
- node.js - 是否可以使用“executionAsyncId”(异步挂钩)在 express/nodejs 中为每个请求创建一个唯一的全局上下文存储/状态?