批量URL爬取检测:定位锚点与JavaScript函数内特定链接的技术求助
检测网页中特定链接的简便方案
直接抓取全量静态资源搜索字符串:这完全适配你的需求——毕竟你不需要提取结构化数据,只要确认目标链接存在就行。
- 用Scrapy或者更轻量的
requests工具先拉取页面的HTML源码,直接在源码里搜索目标链接的特征字符串即可,不管它是在<a>标签里、onclick的JS代码里,还是内嵌<script>标签的内容里,只要是静态写死的内容都能被搜到。 - 别遗漏页面引用的外部JS文件:解析HTML里的
<script src="...">标签,把这些外部JS文件也下载下来逐个搜索。不少网站会把按钮点击这类逻辑写到外部JS文件中。
- 用Scrapy或者更轻量的
优先静态搜索,动态渲染仅作备选:如果目标链接是点击后才动态生成的,静态搜索可能找不到,但大部分工具的特征链接都会提前写在静态资源里(比如工具的专属域名或固定路径),先试静态搜索,真不行再用Playwright、Selenium这类无头浏览器渲染页面,再抓取渲染后的内容进行搜索。
简化逻辑,不用死磕元素定位:不用纠结Scrapy的Selector元素定位,直接把整个响应文本(HTML、JS)当作纯文本处理就行,用Python的
in关键字或者简单正则就能搞定,举个简单示例:import requests from bs4 import BeautifulSoup target_link = "你的目标链接特征字符串" check_url = "要检测的网站URL" # 先检查HTML源码 resp = requests.get(check_url) if target_link in resp.text: print("检测到目标链接") else: # 检查所有外部JS文件 soup = BeautifulSoup(resp.text, "html.parser") for script_tag in soup.find_all("script", src=True): js_src = script_tag["src"] # 处理相对路径 if not js_src.startswith(("http://", "https://")): js_src = f"{check_url.rstrip('/')}/{js_src.lstrip('/')}" try: js_resp = requests.get(js_src) if target_link in js_resp.text: print("检测到目标链接") break except Exception: # 跳过加载失败的JS文件 continue
内容的提问来源于stack exchange,提问作者martinmit
相关产品推荐
相关产品推荐

