【问题标题】:How to take link from onclickvalue in BeautifulSoup?如何从 BeautifulSoup 中的 onclickvalue 获取链接?
【发布时间】:2021-03-11 20:14:54
【问题描述】:

需要帮助清理指向存储在 onclick= 值中的图像的链接。 我这样做了,但我停止了如何在 onclick 中删除除链接之外的所有内容。

<a onclick="ShowEnlargedImagePreview( 'https://steamuserimages-a.akamaihd.net/ugc/794261971268711656/69C39CF2A2BBCDDC7C04C17DF1E88A6ED875DBE7/' );"></a>

links = soup.find('div', class_='workshopItemPreviewImageMain')
links = links.findChild('a', attrs={'onclick': re.compile("^https://")})

但是什么都没有输出。

links = soup.find('div', class_='workshopItemPreviewImageMain')
links = links.findChild('a')
links = links.get("onclick")

显示onclick的整个值:

howEnlargedImagePreview( 'https://steamuserimages-a.akamaihd.net/ugc/794261971268711656/69C39CF2A2BBCDDC7C04C17DF1E88A6ED875DBE7/' )

但只需要一个链接。

【问题讨论】:

    标签: python parsing beautifulsoup onclick


    【解决方案1】:

    你只需要改变你的正则表达式。

    from bs4 import BeautifulSoup
    import re
    
    pattern = re.compile(r'''(?P<quote>['"])(?P<href>https?://.+?)(?P=quote)''')
    
    data = '''
    <div class="workshopItemPreviewImageMain">
    <a onclick="ShowEnlargedImagePreview( 'https://steamuserimages-a.akamaihd.net/ugc/794261971268711656/69C39CF2A2BBCDDC7C04C17DF1E88A6ED875DBE7/' );"></a>
    </div>
    '''
    
    soup = BeautifulSoup(data, 'html.parser')
    
    div = soup.find('div', class_='workshopItemPreviewImageMain')
    
    links = div.find_all('a', {'onclick': pattern})
    
    for a in links:
        print(pattern.search(a['onclick']).group('href'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2021-07-22
      • 2020-09-09
      • 2021-01-01
      • 2020-05-19
      • 2013-12-17
      • 2021-12-25
      相关资源
      最近更新 更多