【问题标题】:Is it possible to read a script value?是否可以读取脚本值?
【发布时间】:2021-07-07 17:04:52
【问题描述】:

我是 python 新手。我有一个问题,我可以用 python 读取脚本值吗?

import requests
from bs4 import BeautifulSoup
import json

url='https://www.iltelegrafolivorno.it/cronaca/radi-vandalico-vetrate-dustrutte-cecina-1.6231324'


r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')

print(soup.find_all('script')[9]["cp30"])

【问题讨论】:

  • 我不太确定你在问什么。您是否尝试在 html 文档中查找所有 <script> 标记?
  • 我尝试提取 cp30 = polopolyweb-free 的值

标签: javascript python python-3.x beautifulsoup


【解决方案1】:

cp30 只会出现,一个简单的正则表达式就可以工作:

import requests, re

print(re.search(r'cp30":\s?"(.*?)"', requests.get('https://www.iltelegrafolivorno.it/cronaca/radi-vandalico-vetrate-dustrutte-cecina-1.6231324').text).group(1))

【讨论】:

    【解决方案2】:

    您将不得不自己解析 javascript。对于这个特定值,下面的简单脚本有效。对于数组或对象等其他值,解析就没有那么简单了。

    import requests
    from bs4 import BeautifulSoup
    import json
    
    url = 'https://www.iltelegrafolivorno.it/cronaca/radi-vandalico-vetrate-dustrutte-cecina-1.6231324'
    r = requests.get(url)
    
    soup = BeautifulSoup(r.content, 'html.parser')
    
    for e in soup.find_all('script'):
        if not e.string: continue
        for line in e.string.splitlines():
            if 'cp30' in line:
                _, value = line.split(':')
                value = json.loads(value)
    
    

    【讨论】:

    • 谢谢!你能建议我在哪里可以了解它是如何工作的吗?
    • 好吧,您可以在value = json.loads(value) 之后添加print(e.string) 以查看脚本标签中的内容。其余的只是基本的字符串处理,大多数教程都应该涵盖。
    猜你喜欢
    • 2015-03-20
    • 2013-07-13
    • 2012-10-24
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    相关资源
    最近更新 更多