首页 > 解决方案 > 如何根据文件扩展名在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文件?

标签: pythonbeautifulsoup

解决方案


试试这个只获取 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'])

推荐阅读