一、现在的大多数动态网站,都是由浏览器端通过js发起ajax请求,拿到数据后再渲染完成页面展示。
二、这种情况下采集数据,通过脚本发起http的get请求,拿到DOM文档页面后再解析提取有用数据的方法是行不通的。
三、然后又有人会想到通过F12打开浏览器控制台分析服务端api,再模拟请求相应的api来拿到我们想要的数据,这种思路在一些情况下可行,但是很多大型网站都会采取一些反爬策略,出于安全性考虑,往往对接口增加了安全验证,比如只有设置了相关的header和cookie,才能对页面进行请求;还有的对请求来源也做了限制等等,这个时候通过这种方式采集数据就更加困难了。
四、我们还有其他有效的方法吗?当然,python做爬虫非常的简单,我们先来了解一下Selenium和Selectors,然后通过爬取美团网上商家信息的例子总结一下数据采集的一些技巧:
Selenium 是一个开源测试框架,用来对web应用(比如网站)做自动化测试用的,因为它可以驱动浏览器,诸如Chrome,Firefox,IE等,所以可以较为真实的模拟人自动去点击网站的各个按钮,翻页,填写表单等,我们使用python驱动Selenium的webdriver,可以驱动浏览器,直接拿到的就是渲染好的DOM文档,大量节省了时间。
Selectors是Scrapy(Python的一套爬虫框架)提取数据的一套机制。被称作选择器,可以通过特定的 XPath 或者 CSS 表达式来“选择” HTML文件中的某个部分。用它来分析提取DOM文档有效数据非常的方便。并且XPath是W3C标准,所以使用Selectors提取数据的方法是通用的。
我们要抓取的第一部分数据是商家的基本信息,包括商家名称、地址、电话、营业时间,分析多个美食类商家我们可知,这些商家的web界面在布局上基本是一致的,所以我们的爬虫可以写的比较通用。为了防止对商家数据的重复抓取,我们将商家的网址信息也存储到数据表中。
声明
一、本站原创内容,其版权属于本网站所有。其他媒体、网站或个人转载使用时不得进行商业性的原版原式的转载,也不得歪曲和篡改本网站所发布的内容。如转载须注明文章来源。
二、本网站转载其它媒体作品的目的在于传递更多信息,并不代表本网站赞同其观点和对其真实性负责;如侵犯你的权益请告诉我们立即删除;其他媒体、网站或个人转载使用自负法律责任。
已有1位网友发表了看法:
百合 评论于 [2022-12-16 13:22:33] 回复ta
这两天我购买一下!!