【问题标题】:Scraping JavaScript var from HTML using Beautiful Soup in Python在 Python 中使用 Beautiful Soup 从 HTML 中抓取 JavaScript var
【发布时间】:2018-05-22 23:08:03
【问题描述】:

在“GET”请求之后,我正在抓取网站的 HTML。我本质上是在尝试从该站点获取一些令牌。我正在使用美丽的汤,因为它是我通常使用的,但我似乎无法弄清楚如何从 html 中获取 javascript 变量。标记在 HTML 中如下所示:

<script type="text/javascript">
var accessToken = "WaX2wWBb9fkp+qVQf6ECq9JcOZJnCL3Y/furfevohpk=";
var ivString = "d2c5708bbcc6b53c23af6d2cdab9f4ab";
var encryptedFpAccountId = "zk/5H7Iz0cNQPxPadMgvDw==";
var accessTokenCode = "0";
var nextPageName="signup-retail"

我需要获取 accessToken、ivString 和 encryptedFpAccountId 相等的值。我应该如何去刮这个?

【问题讨论】:

    标签: python html web-scraping beautifulsoup request


    【解决方案1】:

    使用 Regex 获取所需的变量。

    演示:

    from bs4 import BeautifulSoup
    import re
    s = """<script type="text/javascript">
    var accessToken = "WaX2wWBb9fkp+qVQf6ECq9JcOZJnCL3Y/furfevohpk=";
    var ivString = "d2c5708bbcc6b53c23af6d2cdab9f4ab";
    var encryptedFpAccountId = "zk/5H7Iz0cNQPxPadMgvDw==";
    var accessTokenCode = "0";
    var nextPageName="signup-retail
    </script>"""
    
    soup = BeautifulSoup(s, "html.parser")
    script = soup.find("script")
    accessToken = re.search('var accessToken = (?P<token>.*);', script.string)
    if accessToken:
        print(accessToken.group('token'))
    ivString = re.search('var ivString = (?P<ivString>.*);', script.string)
    if ivString:
        print(ivString.group('ivString'))
    
    encryptedFpAccountId = re.search('var encryptedFpAccountId = (?P<encryptedFpAccountId>.*);', script.string)
    if encryptedFpAccountId:
        print(encryptedFpAccountId.group('encryptedFpAccountId'))
    

    输出:

    "WaX2wWBb9fkp+qVQf6ECq9JcOZJnCL3Y/furfevohpk="
    "d2c5708bbcc6b53c23af6d2cdab9f4ab"
    "zk/5H7Iz0cNQPxPadMgvDw=="
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 2022-01-07
      • 1970-01-01
      • 2020-09-04
      • 2015-03-20
      • 1970-01-01
      • 2022-08-22
      相关资源
      最近更新 更多