Beautifulsoup中的find()返回None

时间:2018-11-30 17:05:21

标签: python-3.x web-scraping beautifulsoup

我对编程总体上还是很陌生,我正在尝试写自己的洪流小子。我使用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 :(得分:2)

检查以下脚本,该脚本可以实现您想要实现的目标。我使用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}")