我目前正在尝试用scrapy刮掉MSN新闻,并且在scrapy shell内部从浏览器获得正确的响应时遇到了一些困难。
当我在浏览器中转到https://www.msn.com/en-us/news/world时,我看到了这一点:
这是完美的,因为这是页面应该是什么样子,但是当我运行命令scrapy shell https://www.msn.com/en-us/news/world
然后view(response)
时,这就是我所看到的。
我已经尝试禁用javascript以查看是否可能是内容正在加载ajax,这就是为什么它无法正常工作,但所有这一切都是停止加载缩略图。有人知道它为什么会这样吗?
答案 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...