用BS4删除用JS编写的脚本

2024-09-29 21:47:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在编写一个脚本,使用BS4和aiohttp在网站上注册一个帐户。文章中需要的一件事就是tagInfo。标记信息的一部分是一个叫做“tmxSessionId”的东西。通常我会像平常一样使用BS4,每次都会刮取值。然而,问题是tmxSessionId是站点正在使用的脚本的一部分,它在JS中。我将在这里发布一些脚本:

<script type="text/javascript">

(function() {
var Context = raptor.require('ebay.context.Context');
    var langCode = "en-US";
    var emailAutoCompleteEnabled = true;

    var dfpContext = '{"tmxSessionId":"081708da1660ab61a9e69761fffcb25e"}';

}

我编辑了脚本,删除了大部分额外的部分,提供了一些上下文以及我感兴趣的部分。所以你可以看到它在一个脚本标签中。所以作为一个测试我试着去做

soup = BeautifulSoup(r.text, 'lxml')
idd = soup.find('script', type='text/javascript')

它带着<script type="text/javascript">var layer = false;</script>回来了 而不是完整的剧本。那么如何解析tmxSessionId呢?你知道吗


Tags: text脚本aiohttp网站vartypecontext文章
1条回答
网友
1楼 · 发布于 2024-09-29 21:47:17

我也经历过同样的情况,自己找到了一条捷径,在每一个同样的场景中都能帮到我。你得走那条捷径。你知道吗

scripts = soup.find_all('script')
your_script = [script for script in scripts if 'tmxSessionId' in str(script)][0]
print(your_script)

列表理解部分将找到包含所需文本的脚本元素。最重要的是你的剧本。所以我在最后加了[0]。你知道吗

希望这有帮助!干杯!你知道吗

相关问题 更多 >

    热门问题