python – 为什么Scrapy返回一个iframe?
作者:互联网
我试试这个
class Parik(scrapy.Spider):
name = "ooshop"
allowed_domains = ["http://www.ooshop.com/courses-en-ligne/Home.aspx"]
def __init__(self, idcrawl=None, proxy=None, *args, **kwargs):
super(Parik, self).__init__(*args, **kwargs)
self.start_urls = ['http://www.ooshop.com/courses-en-ligne/Home.aspx']
def parse(self, response):
print response.css('body').extract_first()
但我没有第一页,我有一个空的iframe
2016-09-06 19:09:24 [scrapy] DEBUG: Crawled (200) <GET http://www.ooshop.com/courses-en-ligne/Home.aspx> (referer: None)
<body>
<iframe style="display:none;visibility:hidden;" src="//content.incapsula.com/jsTest.html" id="gaIframe"></iframe>
</body>
2016-09-06 19:09:24 [scrapy] INFO: Closing spider (finished)
解决方法:
该网站受到网站安全服务公司Incapsula的保护.它为您的“浏览器”提供了一个必须执行的挑战,然后才能获得一个特殊的cookie,让您可以访问该网站.
幸运的是,绕过并不难.安装incapsula-cracker并安装其下载中间件:
DOWNLOADER_MIDDLEWARES = {
'incapsula.IncapsulaMiddleware': 900
}
标签:python,web-scraping,scrapy,iframe,web-crawler 来源: https://codeday.me/bug/20191007/1867850.html