我目前正在使用一个脚本,该脚本使用BS4和aiohttp在站点上注册一个帐户。 POST中需要做的一件事是叫做tagInfo。 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?
答案 0 :(得分:1)
我经历了同样的情况,并且自己找到了一条捷径,可以在每种情况下为我提供帮助。您需要使用该快捷方式。
scripts = soup.find_all('script')
your_script = [script for script in scripts if 'tmxSessionId' in str(script)][0]
print(your_script)
列表理解部分将找到包含所需文本的脚本元素。大多数情况下,第一个元素将是您的脚本。因此,我最后添加了[0]
。
希望这会有所帮助!干杯!