用Scrapy刮刮MSN新闻

时间:2017-08-01 01:34:38

标签: web-scraping scrapy web-crawler scrapy-spider

我目前正在尝试用scrapy刮掉MSN新闻,并且在scrapy shell内部从浏览器获得正确的响应时遇到了一些困难。

当我在浏览器中转到https://www.msn.com/en-us/news/world时,我看到了这一点:Screenshot of what the page is supposed to look like 这是完美的,因为这是页面应该是什么样子,但是当我运行命令scrapy shell https://www.msn.com/en-us/news/world然后view(response)时,这就是我所看到的。 Screenshot of incorrect response

我已经尝试禁用javascript以查看是否可能是内容正在加载ajax,这就是为什么它无法正常工作,但所有这一切都是停止加载缩略图。有人知道它为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

该网站肯定有很多javascript在运行。你应该如何解决这个问题的方法是在一个实例中禁用javascript并在旁边有一个正常的实例 然后你可以挖掘和比较,即找到缩略图ID并搜索它没有javascript源 - 它可能在json或javascript变量的某个地方。

禁用javascript的

This is what scrapy sees 您可以看到文章名称和简短说明。如果您检查标题,您甚至可以看到还有缩略图的链接!

articles = response.xpath("//li[@data-m]/a[@aria-label]")
for article in articles: 
    # thumbnail
    response.xpath('img/@data-src').extract_first()
    # '{"default":"//img-s-msn-com.akamaized.net/tenant/amp/entityid/AAp0iW6.img?h=414&w=624&m=6&q=60&u=t&o=t&l=f&f=jpg&x=1280&y=688"}'
    # title 
    article.xpath("@aria-label").extract_first()
    # 'north korea can hit most of united states: u.s. officials provided by reuters'
    # description
    article.xpath("/img/@alt").extract_first()
    # This Friday, July 28, 2017, photo distributed by the Nort...