Ищите изображения в ссылках «a» с BeautifulSoup в python - PullRequest
0 голосов
/ 16 октября 2018

Я хочу получить все <a href=''>, содержащие изображение (jpg, png, jpeg)

Сначала я обнаружил, что могу загружать ссылки с этим кодом Beautifulsoup

for a in soup.find_all('a', href=True):
    print "Found the URL:", a['href']

НоЯ получаю все строки, которые я хочу получать только изображения.

from bs4 import BeautifulSoup
import requests
import re
url = requests.get("https://8ch.net/a/res/869528.html")
soup = BeautifulSoup(url.text,"html.parser")
print soup
for a in soup.find_all(re.compile('([-\w]+\.(?:jpg|jpeg|png))') ):#'a', href=True):
    print "Found the URL:", a #['href']

после этого я обнаружил, что могу использовать выражение регулярного выражения, чтобы найти все ссылки, содержащие ссылку.

Что я делаюнеправильно?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Я только что закончил, что вы хотите сделать.Я опишу использование кода с примечанием.

from bs4 import BeautifulSoup
import requests
import re
url = requests.get("https://8ch.net/a/res/869528.html")
soup = BeautifulSoup(url.text,"html.parser")
for a in soup.find_all("a" , href=True):
    if re.findall(r".+(?=jpg|png|jpeg)",a['href']): 
    # find out if the url contain jpg or png or jpeg , if not return a empty list. empty list is False
        print(a['href'])
0 голосов
/ 16 октября 2018

Я думаю, что регулярные выражения здесь немного излишни.Просто нужно проверить значение после крайней правой точки.

from bs4 import BeautifulSoup
import requests

url = requests.get("https://8ch.net/a/res/869528.html")
soup = BeautifulSoup(url.text, "html.parser")

for a in soup.find_all('a', href=True):
    if a["href"][a["href"].rfind(".")+1:] in ["jpeg", "png", "jpg"]:
        print(a["href"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...