find () в Beautifulsoup возвращает None - PullRequest
0 голосов
/ 30 ноября 2018

Я очень новичок в программировании в целом и пытаюсь написать свой маленький торрент-личер.Я использую Beautifulsoup, чтобы извлечь заголовок и магнитную ссылку из торрент-файла.Однако элемент find () не возвращает ничего, что бы я ни делал.Страница правильная.Я также проверил с find_next_sibling и прочитал все подобные вопросы, но безрезультатно.Поскольку ошибок нет, я понятия не имею, в чем моя ошибка.Любая помощь приветствуется.Ниже мой код:

import urllib3
from bs4 import BeautifulSoup


print("Please enter the movie name: \n")
search_string = input("")  
search_string.rstrip() 
search_string.lstrip() 
open_page = ('https://www.yify-torrent.org/search/' + search_string +     '/s-1/all/all/')  # get link - creates a search string with input value
print(open_page)
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
manager = urllib3.PoolManager(10)
page_content = manager.urlopen('GET',open_page)
soup = BeautifulSoup(page_content,'html.parser')  
magnet = soup.find('a', attrs={'class': 'movielink'}, href=True)  
print(magnet)

1 Ответ

0 голосов
/ 30 ноября 2018

Проверьте следующий скрипт, который делает именно то, что вы хотите достичь.Я использовал библиотеку requests вместо urllib3.Основная ошибка, которую вы допустили, заключается в том, что вы искали ссылку magnet в неправильном месте.Вам нужно пройти один слой глубже, чтобы выкопать эту ссылку.Попробуйте использовать quote вместо манипуляции со строками, чтобы соответствовать поисковому запросу в URL-адресе.

Сделайте это:

import requests
from urllib.parse import urljoin
from urllib.parse import quote
from bs4 import BeautifulSoup

keyword = 'The Last Of The Mohicans'

url = 'https://www.yify-torrent.org/search/'
base = f"{url}{quote(keyword)}{'/p-1/all/all/'}"

res = requests.get(base)
soup = BeautifulSoup(res.text,'html.parser')  
tlink = urljoin(url,soup.select_one(".img-item .movielink").get("href"))
req = requests.get(tlink)
sauce = BeautifulSoup(req.text,"html.parser")
title = sauce.select_one("h1[itemprop='name']").text
magnet = sauce.select_one("a#dm").get("href")
print(f"{title}\n{magnet}") 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...