如何在 Python 中使用 Beautiful Soup 解析下拉列表并获取 pdf 的所有链接?

技术残骸

我正在尝试从本网站的下拉菜单中抓取 pdf 链接我只想抓取指导值 (CVC) 下拉列表。以下是我使用但没有成功的代码

import requests
from bs4 import BeautifulSoup

req_ses = requests.Session()
igr_get_base_response = req_ses.get("https://igr.karnataka.gov.in/english#")

soup = BeautifulSoup(igr_get_base_response.text)

def matches_block(tag):
    return matches_dropdown(tag) and tag.find(matches_text) != None

def matches_dropdown(tag):
    return tag.name == 'li' and tag.has_attr('class') and 'dropdown-toggle' in tag['class']

def matches_text(tag):
    return tag.name == 'a' and tag.get_text()

for li in soup.find_all(matches_block):
    for ul in li.find_all('ul', class_='dropdown-toggle'):
        for a in ul.find_all('a'):
            if a.has_attr('href'):
                print (a['href'])

任何建议都会有很大帮助!

编辑:在下面添加部分 HTML:

<div class="collapse navbar-collapse">
    <ul class="nav navbar-nav">



        <li class="">
            <a href="https://igr.karnataka.gov.in/english" title="Home" class="shome"><i class="fa fa-home"> </i></a>
        </li>





        <li>
            <a class="dropdown-toggle" data-toggle="dropdown" title="RTI Act">RTI Act <b class="caret"></b></a>
            <ul class="dropdown-menu multi-level">

                <!-- <li> -->
                <li class="">
                    <a href=" https://igr.karnataka.gov.in/page/RTI+Act/Yadagiri+./en " title="Yadagiri .">Yadagiri .
                    </a>

                </li>

                <!-- </li> -->

                <!-- <li> 

技术残骸

因此,我使用以下方法来完成上述部分:

def make_sqlite_dict_from_parsed_row(district_value, sro_value, pdf_file_link):
    sqlite_dict = {
        "district_value": district_value,
        "sro_value": sro_value,
        "pdf_file_link": pdf_file_link.strip().replace(' ', '%20'),
        "status": "PENDING"
    }
    sqlite_dict['hsh'] = get_hash(sqlite_dict, IGR_SQLITE_HSH_TUP)
    return sqlite_dict

li_element_list = home_response_soup.find_all('li', {'class': 'dropdown-submenu'})
parsed_row_list=[]

for ele in li_element_list:
    district_value = ele.find('a', {'class': 'dropdown-toggle'}).get_text().strip()
    sro_pdf_a_tags = ele.find_all('a', attrs={'target': '_blank'})

    if len(sro_pdf_a_tags) >=1:
        for sro_a_tag in sro_pdf_a_tags:
            sqlite_dict = make_sqlite_dict_from_parsed_row(
                district_value,
                sro_a_tag.get_text(strip=True),
                sro_a_tag.get('href')
            )
            parsed_row_list.append(sqlite_dict)
            
    else:
        print("District: ", district_value, "'s pdf is corrupted")

这将给出一个proper_pdf_link、sro_name 和district_name

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何单击/使用从 Python 中的 Beautiful Soup 解析的链接

在python中使用Beautiful Soup解析html

在 Python 3.0 中使用 Beautiful Soup 获取特定链接的最有效方法是什么?

如何在Beautiful Soup 4(Python)中使用搜索栏

如何在Python的Beautiful Soup中使用自定义解析器?

从页面获取所有链接Beautiful Soup

在 Beautiful Soup 中使用 find_all 找到所有链接和文本后,如何获取您需要的链接和文本

如何使用Python Beautiful Soup获取html的标记名称?

使用 Beautiful Soup Python 获取没有属性的跨度文本

使用Beautiful Soup在Python中递归地删除网站的所有子链接

使用Beautiful Soup在Python中解析网站

使用 Beautiful Soup 或 Selenium (Py) 下载 ASPX PDF 链接

Python-如何使用Beautiful Soup查找ID为“ value”的所有跨度的文本?

如何使用Beautiful Soup从HTML获取文本

如何使用Beautiful Soup返回YouTube播放列表中所有URL的列表?

使用Beautiful Soup获取所有HTML标签

如何使用 Beautiful Soup 从这个 url 获取所有价格?

以下链接使用 Beautiful Soup?

如何在Beautiful Soup 4.7.1中使用“选择”?

如何使用Beautiful Soup从python访问Google地图的地点类型(小部件窗格链接)

如何在Python Beautiful Soup中获取没有唯一元素的特定文本信息?

如何使用Beautiful soup python将div中的所有详细信息导出到excel / csv?

如何使用 selenium / beautiful soup 或类似方法解析此链接中的表格?

Python Beautiful Soup(不确定如何解析特定元素)

Python Beautiful Soup解析具有特定ID的表

如何使用Python和Beautiful Soup修复html列表片段中缺少的ul标签

如何使用python beautiful soup从HTML下面获取标签和ID信息

如何使用Python 3和Beautiful Soup获取Wikipedia文章的文本?

Python Beautiful Soup 4使用.select()获取子元素