Python Scrapy:响应对象与浏览器中的源代码不同

1 投票
1 回答
767 浏览
提问于 2025-04-29 23:53

我正在做一个使用Scrapy的项目。

除了一个字段外,其他所有想要的信息都能顺利抓取。缺失的那个字段在Scrapy的响应中根本没有显示(我在scrapy shell中检查过),但当我用浏览器访问这个页面时,它是可以看到的。在Scrapy的响应中,预期的标签是存在的,但标签之间的文本却没有。

这个页面没有用到JavaScript,但这个字段是由服务器提供的(它显示的是当前访问该页面的次数)。也没有使用iframe。

我已经在设置文件中把用户代理设置成和我的浏览器一致。下载延迟也设置成了5秒。

补充说明:

这到底是什么原因呢?

暂无标签

1 个回答

1

这是一个通过ajax/javascript加载的值。

你采取了什么步骤来确认没有使用JS呢?我在没有开启javascript的情况下加载了页面,虽然那个区域显示了占位内容(“Visitas”),但实际的数据是通过ajax请求写入的。

你仍然可以使用scrapy加载这些数据,只是需要额外请求一个通常通过页面上的ajax访问的URL。服务器会以XML格式返回访问次数,具体通过这个链接获取:http://www.fincaraiz.com.co/WebServices/Statistics.asmx/GetAdvertVisits?idAdvert=1337688&idASource=40&idType=1001(试着打开这个链接,你会看到你在原始邮件中提供的页面的访问次数)。

还有另一个ajax请求会返回“True”这个值,但我不太确定这个数据的实际含义。不过,这可能还是有用的:

http://www.fincaraiz.com.co/WebServices/Statistics.asmx/DetailAdvert?idAdvert=1337688&idType=1001&idASource=40&strCookie=13/11/2014:19-05419&idSession=10hx5wsfbqybyxsywezx0n1r&idOrigin=44

撰写回答