繁体   English   中英

如何在python中使用beautifulsoup获取完整的href链接

[英]How to get complete href links using beautifulsoup in python

我正在尝试按流派获得顶级电影的名字。 我无法获得完整的href链接,我只能获得一半的href链接

通过以下代码,

https://www.imdb.com/search/title?genres=action&sort=user_rating,desc&title_type=feature&num_votes=25000,
https://www.imdb.com/search/title?genres=adventure&sort=user_rating,desc&title_type=feature&num_votes=25000,
https://www.imdb.com/search/title?genres=animation&sort=user_rating,desc&title_type=feature&num_votes=25000,
https://www.imdb.com/search/title?genres=biography&sort=user_rating,desc&title_type=feature&num_votes=25000,
.........

像那样,但我想按动作,冒险,动画,传记等流派排名前100名电影。

我尝试了以下代码:

from bs4 import BeautifulSoup
import requests

url = 'https://www.imdb.com'
main_url = url + '/chart/top'
res = requests.get(main_url)
soup = BeautifulSoup(res.text, 'html.parser')
for href in soup.find_all(class_='subnav_item_main'):
               # print(href)
               all_links = url + href.find('a').get('href')
               print(all_links)

我想要完整的链接,如下面的链接所示

/search/title?genres=action&sort=user_rating,desc&title_type=feature&num_votes=25000,&pf_rd_m=A2FGELUUNOQJNL&pf_rd_p=5aab685f-35eb-40f3-95f7-c53f09d542c3&pf_rd_r=FM1ZEBQ7E9KGQSDD441H&pf_rd_s=right-6&pf_rd_t=15506&pf_rd_i=top&ref_=chttp_gnr_1"

您需要在这些url上进行另一个循环,并且限制为仅获得100个。我将其存储在字典中,键为流派,值为电影列表。 注意可能会出现原始标题,例如The Mountain II(2016)是Dag II(原始标题)。

links是一个元组列表,其中我将流派保留为第一项,将URL保留为第二项。

import requests, pprint
from bs4 import BeautifulSoup as bs
from urllib.parse import  urljoin

url = 'https://www.imdb.com/chart/top'    
genres = {}

with requests.Session() as s:
    r = s.get(url)
    soup = bs(r.content, 'lxml')
    links = [(i.text, urljoin(url,i['href'])) for i in soup.select('.subnav_item_main a')]

    for link in links:
        r = s.get(link[1])
        soup = bs(r.content, 'lxml')
        genres[link[0].strip()] = [i['alt'] for i in soup.select('.loadlate', limit = 100)]

pprint.pprint(genres)

样本输出:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM