如何检测网页中大多数不常见的超链接和隐式重定向
How to detect most of uncommon hyperlinks and implicit redirects in a webpage?
我在 Windows 版 C++/Qt4.8.5 中创建网站爬虫。我发现有时页面可能包含隐式(伪)重定向,例如script
标签中的location.replace("some site");
。请求的结果代码是 200 而不是类似 Permanently Removed
.我不使用正则表达式来查找指向其他页面的链接,因为它不健壮。我检查 HTML 节点的属性而不是它。原始爬网程序仅检测a
标记中的href
属性。但是还有其他节点可以包含 url。例如,<META HTTP-EQUIV="REFRESH" CONTENT="0; URL=/relative_url">
.与 url 容器、隐式重定向相关的标签/属性(包括script
)的非官方列表在哪里?也许,C++/Java 中的某些库包含对这些情况的处理。
另外,我注意到将首选语言的标题添加到请求中无法更改网站的页面语言。我的意思是 Chrome 有某种语言的页面,但我的抓取工具有另一种默认语言的页面,尽管它试图模仿 Chrome 用户代理和语言首选项。我注意到 Chrome 中的 Cookie 包含该网站的语言属性。是否有任何其他属性可以帮助服务器生成所需语言的页面?
是否有任何其他属性可以帮助服务器生成所需语言的页面?
还有更多的可能性,例如地理位置(由 IP、地理位置 API 等标识)。
相关文章:
- 针对静态库的 G++ 链接不起作用
- Doxygen:不为非成员函数生成超链接
- boost::存在符号链接不取消引用
- 模板外部链接不起作用
- 与LLVM LLD链接不起作用[MACOS]
- 返回值上的 C++ 方法链接不起作用
- Boost Logger静态链接:不起作用
- 如何使超链接调用相同的C++CGI进程
- CMake 链接不正确?
- 链接不返回对象的运算符
- cocos2d android编译时链接不起作用
- 用于C++的Qt超链接
- 如果我在GCC中编译并链接不需要的库,会发生什么
- Visual Studios 9 Dll链接不一致
- 尝试使用 swig 将C++库与 C# 链接 - 不会让我添加对 C# 项目的 resulging dll 的引用
- 编译伪C++程序时链接不成功
- 为什么隐式DLL链接需要相关的Lib文件,而显式链接不需要
- CMake链接不是子文件夹
- Java c++ jni链接不满足错误
- 如何检测网页中大多数不常见的超链接和隐式重定向