javascript - 如何使用 python/scrapy 抓取网站上小部件的输出?

标签 javascript python css web-scraping scrapy

我正在尝试抓取网站上的广告...

例如这个网站

http://www.bestyling.com/15-of-the-most-expensive-shoes-ever-and-you-wont-believe-whats-1/?utm_source=Ourbrain&utm_medium=cpc&utm_campaign=15%20Shoes%20-%20Desktop%20USA

我正在尝试从这个广告中获取广告

/html/body[@class='single single-post postid-171 single-format-standard custom-background hasGoogleVoiceExt']/div[@id='site']/div[@id='site-out ']/div[@id='site-fixed']/div[@id='content-out']/div[@id='content-in']/div[@id='main-content-wrap ']/div[@id='main-content-contain']/div[@id='content-wrap']/div[@class='sec-marg-out4 relative']/div[@class=' sec-marg-in4']/article[@class='post-171 post type-post status-publish format-standard hentry category-uncategorized']/div[@id='post-area']/div[@class ='post-body-out']/div[@class='post-body-in']/div[@id='content-area']/div[@class='content-area-cont left relative' ]/div[@class='sec-marg-out relative']/div[@class='sec-marg-in']/div[@class='content-area-out']/div[@class= 'content-area-in']/div[@class='content-main 左相对']/div[@id='article-ad']/div[1]/div[@id='ac_110238']/div[@class='ac_adbox']/div[@class='ac_adbox_inner']

'ac_container' 或 'ac-adbox'

当我在浏览器中访问该页面时,我看到了广告,当我使用 scrapy 获取 html 时

这是一个脚本

  <div id="contentad110238"></div>
   <script type="text/javascript">
        (function(d) {
        var params =
        {
           id: "d12cd6f3-b896-443b-9140-07e35e66e222",
           d:  "YmVzdHlsaW5nLmNvbQ==",
           wid: "110238",
           cb: (new Date()).getTime()
        };

    var qs=[];
    for(var key in params) qs.push(key+'='+encodeURIComponent(params[key]));
    var s = d.createElement('script');s.type='text/javascript';s.async=true;
    var p = 'https:' == document.location.protocol ? 'https' : 'http';
    s.src = p + "://api.content.ad/Scripts/widget2.aspx?" + qs.join('&');
    d.getElementById("contentad110238").appendChild(s);
})(document);
</script>                                                       </div>

我该如何抓取这个?任何帮助将不胜感激……我猜我必须在 python 或 scrapy 中使用 js 渲染器……有什么建议吗?

最佳答案

这些广告是通过 Javascript 获取的,因此当您下载原始 HTML(就像 Scrapy 那样)时,您将看不到它们。

不过,你可以看看Splash (以前的 ScrapyJS)与 Scrapy integration使用 Javascript 无缝嵌入浏览器。直接来自 Scrapy 开发者。

一切都在 Python 中,除了用于浏览器渲染的 Qt。

关于javascript - 如何使用 python/scrapy 抓取网站上小部件的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34945137/

相关文章:

javascript - 如何使用 Javascript 以编程方式生成 window.event?

javascript - 如何处理 JSON 响应

php - 获取整个 div 及其元素并使用 php 邮件功能发送它

javascript - 屏幕缩小时试图隐藏 Logo

jquery - 两个屏幕分辨率的重要属性

javascript - 如何获取#div 的实际高度(包括溢出部分)

javascript - underscore.js groupBy 子数组

python - sqlalchemy func.group_concat 和数据的随机顺序

Python/Xpath 转换查询

python - 使用 CVXPY 实现 LMI 约束