Как установить фильтр в супе bs4 на основе расширения файла? - PullRequest
0 голосов
/ 13 мая 2018

Я успешно написал, чтобы получить все детали файла из вики-категории с помощью красивого soup4 в python.Категория содержит .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?

1 Ответ

0 голосов
/ 13 мая 2018

Попробуйте, чтобы получить только ссылки в формате 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'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...