从网页获取列表并显示它?

问题描述 投票:0回答:1

我正在制作一个展示广泛武术的节目。我认为网络抓取将是做到这一点的最佳方式,这样随着事物的发展和发展,该程序有望与新添加的内容一起工作。我有一个关于如何在页面上调用所需无序列表的想法,但我知道的方法需要它具有类/类标题,但事实并非如此。关于如何在我的代码中正确填充此列表的任何想法?我对 python 相当陌生,但有一些其他语言的背景

这是我找到的调用无序列表的代码:

import requests
from bs4 import BeautifulSoup

MA_list = "https://en.wikipedia.org/wiki/List_of_Japanese_martial_arts"

def MartialArts(): 
    # the target we want to open     
    url = MA_list
      
    #open with GET method 
    resp=requests.get(url) 
      
    #http_respone 200 means OK status 
    if resp.status_code == 200: 
        print("Successfully opened the web page") 
        print("Martial Arts :-\n") 
     
        soup = BeautifulSoup(resp.text, 'html.parser')     
  
        # l is the list which contains all the text ie the various arts 
        l = soup.find("ul", {"class" : "class_title"}) 
       
        for i in l.findAll("a"): 
            print(i.text) 
    else: 
        print("Error") 
          
MartialArts()

我本来期待ul能上课,所以这从一开始就注定失败。下面有一张我试图访问的图片。每个列表(ul 块下大约有 30 个)都包含我试图放入列表或循环中显示的独特艺术的名称。 Wiki 页面源代码 div 块尝试访问和打印

python web-scraping https
1个回答
0
投票

BeautifulSoup 有一个

select()
方法,它需要 css 选择器,使用
soup.select()
获取所有匹配元素的列表,使用
soup.select_one()
获取第一个匹配元素。

如果您定位的元素没有唯一的 id/class,您可以尝试其他选择器,例如属性选择器或子组合器

基本上,您可以像在 javascript/浏览器中一样选择元素。

在这种情况下,我们可以使用此选择器选择所有相关的

<a>
标签:
soup.select('div.div-col > ul > li > a')
甚至这个
soup.select('div.div-col a')

© www.soinside.com 2019 - 2024. All rights reserved.