Python - 如何在抓取时欺骗反广告拦截过滤器?
Python - how to trick anti adblock filter while scraping?
我正在尝试使用 python urllib 下载网站的内容,但我遇到了问题,因为该网站有一个 addblock 过滤器,我唯一能得到的是要求我禁用 addblock 的文本。 ..有什么办法可以欺骗这种过滤器吗?
提前致谢。 (:
Javascript 解析
您 运行 遇到的问题是一个 JavaScript 过滤器,它会在页面加载后加载数据。警告您正在使用 adblock 的消息存在于原始 HTML 中并且是完全静态的。当 JavaScript 调用能够验证 adblock 存在或不存在的位置时,它会被替换。有几种方法可以解决这个问题,但是每种方法都需要找到某种加载方式 JavaScript.
解决方案
您的问题有多种解决方案。您可以阅读更多关于它们的信息 here。
- Embed a web browser within an application and simulate a normal user.
- Remotely connect to a web browser and automate it from a scripting
language.
- Use special purpose add-ons to automate the browser
- Use a framework/library to simulate a complete browser.
如您所见,每一个都以某种方式需要模拟浏览器和 DOM 对象。由于有多个库可以帮助您完成此操作,因此我强烈建议您查看上面的 url。
以下是来自同一页面的代码示例,展示了如何在通过 JavaScript 生成 URL 的页面上检索 URL。它依赖于 gargoylesoftware 的库。
import com.gargoylesoftware.htmlunit.WebClient as WebClient
import com.gargoylesoftware.htmlunit.BrowserVersion as BrowserVersion
def main():
webclient = WebClient(BrowserVersion.FIREFOX_3_6) # creating a new webclient object.
url = "http://www.gartner.com/it/products/mq/mq_ms.jsp"
page = webclient.getPage(url) # getting the url
articles = page.getByXPath("//table[@id='mqtable']//tr/td/a") # getting all the hyperlinks
if __name__ == '__main__':
main()
不过,
我不确定您为什么要抓取网页,或者您是从哪个网站抓取的。但是,自动收集此类数据违反了各种网站的条款和条件,我建议您在遇到任何麻烦之前修改这些条款。
进一步研究
如果您正在为您的问题寻找更通用的答案(例如 "How can I load javascript with Python."),我强烈建议您查看此站点上以前的答案,因为它们提供了一些对问题的非常好的见解:
Web-scraping JavaScript page with Python
我正在尝试使用 python urllib 下载网站的内容,但我遇到了问题,因为该网站有一个 addblock 过滤器,我唯一能得到的是要求我禁用 addblock 的文本。 ..有什么办法可以欺骗这种过滤器吗? 提前致谢。 (:
Javascript 解析
您 运行 遇到的问题是一个 JavaScript 过滤器,它会在页面加载后加载数据。警告您正在使用 adblock 的消息存在于原始 HTML 中并且是完全静态的。当 JavaScript 调用能够验证 adblock 存在或不存在的位置时,它会被替换。有几种方法可以解决这个问题,但是每种方法都需要找到某种加载方式 JavaScript.
解决方案
您的问题有多种解决方案。您可以阅读更多关于它们的信息 here。
- Embed a web browser within an application and simulate a normal user.
- Remotely connect to a web browser and automate it from a scripting language.
- Use special purpose add-ons to automate the browser
- Use a framework/library to simulate a complete browser.
如您所见,每一个都以某种方式需要模拟浏览器和 DOM 对象。由于有多个库可以帮助您完成此操作,因此我强烈建议您查看上面的 url。
以下是来自同一页面的代码示例,展示了如何在通过 JavaScript 生成 URL 的页面上检索 URL。它依赖于 gargoylesoftware 的库。
import com.gargoylesoftware.htmlunit.WebClient as WebClient
import com.gargoylesoftware.htmlunit.BrowserVersion as BrowserVersion
def main():
webclient = WebClient(BrowserVersion.FIREFOX_3_6) # creating a new webclient object.
url = "http://www.gartner.com/it/products/mq/mq_ms.jsp"
page = webclient.getPage(url) # getting the url
articles = page.getByXPath("//table[@id='mqtable']//tr/td/a") # getting all the hyperlinks
if __name__ == '__main__':
main()
不过,
我不确定您为什么要抓取网页,或者您是从哪个网站抓取的。但是,自动收集此类数据违反了各种网站的条款和条件,我建议您在遇到任何麻烦之前修改这些条款。
进一步研究
如果您正在为您的问题寻找更通用的答案(例如 "How can I load javascript with Python."),我强烈建议您查看此站点上以前的答案,因为它们提供了一些对问题的非常好的见解:
Web-scraping JavaScript page with Python