【问题标题】:Extract part of href link using beautiful soup使用美丽的汤提取部分href链接
【发布时间】:2020-05-31 21:22:05
【问题描述】:

我是 python 请求和漂亮汤的新手,我试图创建一个脚本来自动登录和注销,但我需要“_wpnonce”值来发送有效的发布请求。我想知道是否有一种方法可以使用漂亮的汤从此链接中提取“_wpnonce”值,不胜感激。

<a href="https://www.example.com/wp-login.php?action=logout&amp;_wpnonce=fc789123fe&redirect_to=%2Fuser%2Flogout">Sign Out</a>

提取的值将是“fc789123fe”

【问题讨论】:

    标签: python-3.x wordpress beautifulsoup python-requests


    【解决方案1】:

    你可以使用urllib.parse来解析组件的URL(官方正确的方式):

    例如:

    txt = '''<a href="https://www.example.com/wp-login.php?action=logout&amp;_wpnonce=fc789123fe&redirect_to=%2Fuser%2Flogout">Sign Out</a>'''
    
    from bs4 import BeautifulSoup
    from urllib.parse import parse_qs, urlparse
    
    soup = BeautifulSoup(txt, 'html.parser')
    
    href = soup.select_one('a')['href']
    parameters = parse_qs(urlparse(href).query)
    
    print( parameters['_wpnonce'][0] )
    

    打印:

    fc789123fe
    

    要“作弊”一点,可以使用re模块:

    print( re.search(r'_wpnonce=([a-f0-9]+)', soup.select_one('a')['href']).group(1) )
    

    编辑:要查找带有文本 Sign Out 的标签 &lt;a&gt;,您可以这样做:

    href = soup.find('a', text='Sign Out')['href']
    

    【讨论】:

    • 谢谢你的工作,有没有办法找到带有“退出”文本的元素?
    • 谢谢,感谢您的帮助!
    【解决方案2】:

    这应该可以工作

    tag = r'<a href="https://www.example.com/wp-login.phpaction=logout&amp;_wpnonce=fc789123fe&redirect_to=%2Fuser%2Flogout">Sign Out</a>'
    tag = tag.split("_wpnonce=")[1]
    tag = tag.split("&")[0]
    print(tag)
    

    输出

    fc789123fe
    

    【讨论】:

      猜你喜欢
      • 2018-07-31
      • 2015-08-01
      • 2020-03-17
      • 2016-09-11
      • 1970-01-01
      • 2015-06-09
      • 2018-05-08
      • 2016-12-18
      • 1970-01-01
      相关资源
      最近更新 更多