Python 3.x 如何提取';alt';python对HTML文档的价值?

Python 3.x 如何提取';alt';python对HTML文档的价值?,python-3.x,beautifulsoup,extract,Python 3.x,Beautifulsoup,Extract,我正在学习Beautifulsoup的基本功能。我想知道下面的代码的哪一部分可以用来提取电影排名页面上alt的编号(表示排名列表的编号,如1、2、3)。我在下面写了一个示例 import requests from bs4 import BeautifulSoup headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrom

我正在学习Beautifulsoup的基本功能。我想知道下面的代码的哪一部分可以用来提取电影排名页面上alt的编号(表示排名列表的编号,如1、2、3)。我在下面写了一个示例

import requests
from bs4 import BeautifulSoup
    
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
    
data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303')
    
soup = BeautifulSoup(data.text, 'html.parser')
    
movies = soup.select('#old_content > table > tbody > tr')
    print(len(movies))   
    
    for movie in movies:
        d_tag = movie.select_one('td.ac > alt')
        if d_tag is not None:
            print (d_tag)
我尝试了几种方法在网上找到答案,从'd_tag='1'开始

movie.select.one('td.ac>alt')(我需要的不仅仅是'number'

电影.select.one('td.ac>img alt')

电影.select.one('td.ac>img>alt')

movie.select.one('td.ac>img.alt')


这是第一次就这个伟大的社区提出问题,如果我的问题很尴尬,请原谅。

要获得所有电影标题+排名,您可以使用以下示例:

import requests 
from bs4 import BeautifulSoup


url = 'https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303'
soup = BeautifulSoup( requests.get(url).content, 'html.parser' )

for row in soup.select('.list_ranking > tbody > tr:has(a)'):
    movie_title = row.a.text
    ranking = row.select_one('.point').text
    print(movie_title, ranking)
印刷品:

그린 북 9.60
가버나움 9.59
베일리 어게인 9.52
주전장 9.52
포드 V 페라리 9.51
아일라 9.49
원더 9.49
당갈 9.47
쇼생크 탈출 9.44
터미네이터 2:오리지널 9.43
보헤미안 랩소디 9.42
덕구 9.41
나 홀로 집에 9.41
월-E 9.41
살인의 추억 9.40
빽 투 더 퓨쳐 9.40
인생은 아름다워 9.39
매트릭스 9.39
라이언 일병 구하기 9.39
사운드 오브 뮤직 9.39
헬프 9.39
포레스트 검프 9.39
안녕 베일리 9.39
글래디에이터 9.39
위대한 쇼맨 9.38
센과 치히로의 행방불명 9.38
토이 스토리 3 9.38
어벤져스: 엔드게임 9.38
클래식 9.38
알라딘 9.38
헌터 킬러 9.37
죽은 시인의 사회 9.37
아이 캔 스피크 9.37
레옹 9.37
동주 9.37
반지의 제왕: 왕의 귀환 9.37
타이타닉 9.36
캐스트 어웨이 9.36
여인의 향기 9.36
집으로... 9.36
굿바이 마이 프랜드 9.35
서유기 2 - 선리기연 9.35
주토피아 9.35
두 교황 9.35
굿 윌 헌팅 9.35
클레멘타인 9.35
히든 피겨스 9.35
세 얼간이 9.35
쉰들러 리스트 9.34
울지마 톤즈 9.34
试试这个:

import requests
from bs4 import BeautifulSoup

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}

data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303')

soup = BeautifulSoup(data.text, 'html.parser')

movies = soup.select('#old_content > table > tbody > tr')

final = {}

for movie in movies:
    try:
        final.setdefault('Ranking',[]).append(movie.select_one('td.ac > img')['alt'])
    except:
        pass

    try:
        final.setdefault('Title',[]).append(movie.select_one('td.title > div > a').text)
    except:
        pass

    try:
        final.setdefault('Rating',[]).append(movie.select_one('td.point').text)
    except:
        pass

for pair in zip(final['Ranking'],final['Title'],final['Rating']):
    print(" , ".join(pair))
输出:

01 , 그린 북 , 9.60
02 , 가버나움 , 9.59
03 , 베일리 어게인 , 9.52
04 , 주전장 , 9.52
05 , 포드 V 페라리 , 9.51
06 , 아일라 , 9.49
07 , 원더 , 9.49
08 , 당갈 , 9.47
09 , 쇼생크 탈출 , 9.44
010 , 터미네이터 2:오리지널 , 9.43
11 , 보헤미안 랩소디 , 9.42
12 , 덕구 , 9.41
13 , 나 홀로 집에 , 9.41
14 , 월-E , 9.41
15 , 살인의 추억 , 9.40
16 , 빽 투 더 퓨쳐 , 9.40
17 , 인생은 아름다워 , 9.39
18 , 매트릭스 , 9.39
19 , 라이언 일병 구하기 , 9.39
20 , 사운드 오브 뮤직 , 9.39
21 , 헬프 , 9.39
22 , 포레스트 검프 , 9.39
23 , 안녕 베일리 , 9.39
24 , 글래디에이터 , 9.39
25 , 위대한 쇼맨 , 9.38
26 , 센과 치히로의 행방불명 , 9.38
27 , 토이 스토리 3 , 9.38
28 , 어벤져스: 엔드게임 , 9.38
29 , 클래식 , 9.38
30 , 알라딘 , 9.38
31 , 헌터 킬러 , 9.37
32 , 죽은 시인의 사회 , 9.37
33 , 아이 캔 스피크 , 9.37
34 , 레옹 , 9.37
35 , 동주 , 9.37
36 , 반지의 제왕: 왕의 귀환 , 9.37
37 , 타이타닉 , 9.36
38 , 캐스트 어웨이 , 9.36
39 , 여인의 향기 , 9.36
40 , 집으로... , 9.36
41 , 굿바이 마이 프랜드 , 9.35
42 , 서유기 2 - 선리기연 , 9.35
43 , 주토피아 , 9.35
44 , 두 교황 , 9.35
45 , 굿 윌 헌팅 , 9.35
46 , 클레멘타인 , 9.35
47 , 히든 피겨스 , 9.35
48 , 세 얼간이 , 9.35
49 , 쉰들러 리스트 , 9.34
50 , 울지마 톤즈 , 9.34

预期的输出是什么?像1、2、3这样的输出(排名列表的数量)。谢谢好的…看看我的solution@Sushil评论已更新。请看一看。谢谢Andrej,如果我需要排名列表的编号(如1、2、3),我如何修复代码?非常感谢;)谢谢@Sushil的友好回答。在您编写的代码中,似乎需要设置“prettytable”。有没有办法不用那个软件包?我想在自己的学习环境下解决这个问题。另一个错误是调试时出现代码上层的“class_”错误。请分享你的想法;)只需在您的命令行中键入
pip install prettytable
,您就可以安装
prettytable
。实际上没有什么需要设置的。您可以使用熊猫吗?和
应该有效。它会抛出什么错误?好的…允许你使用熊猫吗?不,在我的环境中,“请求”、“beautifulsoup”和“Pymango”包都已设置。好的…查看我的最新编辑。我没有使用任何额外的软件包就完成了。