gpt4 book ai didi

python - 完美获取python中的所有javascript文件名及其内容

转载 作者:太空宇宙 更新时间:2023-11-03 14:13:08 27 4
gpt4 key购买 nike

我想扫描一些网站,并想获取所有 java 脚本文件的名称和内容。我尝试使用 BeautifulSoup 进行 python 请求,但无法获取脚本详细信息和内容。我是否遗漏了什么?

我一直在尝试很多方法来寻找,但我觉得自己在黑暗中跌跌撞撞。这是我正在尝试的代码

import requests
from bs4 import BeautifulSoup
r = requests.get("http://www.marunadanmalayali.com/")
soup = BeautifulSoup(r.content)

最佳答案

您可以使用以下代码获取所有链接的 JavaScript 代码:

l = [i.get('src') for i in soup.find_all('script') if i.get('src')] 
  • soup.find_all('script')返回所有 <script> 的列表页面中的标签。

  • A list comprehension此处用于循环遍历 soup.find_all('script') 返回的列表中的所有元素。 .

  • i是一个 dict like 对象,使用 .get('src')检查它是否有 src属性。如果没有,请忽略它。否则,将其放入列表(在示例中称为 l)。

在这种情况下,输出如下所示:

['http://adserver.adtech.de/addyn/3.0/1602/5506153/0/6490/ADTECH;loc=700;target=_blank;grp=[group]',
'http://tags.expo9.exponential.com/tags/MarunadanMalayalicom/ROS/tags.js',
'http://tags.expo9.exponential.com/tags/MarunadanMalayalicom/ROS/tags.js',
'http://js.genieessp.com/t/057/794/a1057794.js',
'http://ib.adnxs.com/ttj?id=5620689&cb=[CACHEBUSTER]&pubclick=[INSERT_CLICK_TAG]',
'http://ib.adnxs.com/ttj?id=5531763',
'http://advs.adgorithms.com/ttj?id=3279193&cb=[CACHEBUSTER]&pubclick=[INSERT_CLICK_TAG]',
'http://xp2.zedo.com/jsc/xp2/fo.js',
'http://www.marunadanmalayali.com/js/mnmads.js',
'http://www.marunadanmalayali.com/js/jquery-2.1.0.min.js',
'http://www.marunadanmalayali.com/js/jquery.hoverIntent.minified.js',
'http://www.marunadanmalayali.com/js/jquery.dcmegamenu.1.3.3.js',
'http://www.marunadanmalayali.com/js/jquery.cookie.js',
'http://www.marunadanmalayali.com/js/swanalekha-ml.js',
'http://www.marunadanmalayali.com/js/marunadan.js?r=1875',
'http://www.marunadanmalayali.com/js/taboola_home.js',
'http://d8.zedo.com/jsc/d8/fo.js']

我的代码遗漏了一些链接,因为它们实际上不在 HTML 源代码中。

您可以在控制台中看到它们:

Chrome console

但它们不在源代码中:

HTML source

通常,这是因为这些链接是由 JavaScript 生成的。和 requests模块不会像真正的浏览器那样在页面中运行任何 JavaScript - 它只会发送获取 HTML 源代码的请求。

如果您还需要它们,则必须使用另一个模块来运行该页面中的 JavaScript,然后您才能看到这些链接。为此,我建议使用 selenium - 它运行一个真正的浏览器,因此它可以在页面中运行 JavaScript。

例如(确保您已经安装了 selenium 和它的网络驱动程序):

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome() # use Chrome driver for example
driver.get('http://www.marunadanmalayali.com/')

soup = BeautifulSoup(driver.page_source, "html.parser")
l = [i.get('src') for i in soup.find_all('script') if i.get('src')]

__import__('pprint').pprint(l)

关于python - 完美获取python中的所有javascript文件名及其内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35692537/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com