因为淘宝是动态网页,很多商品的数据是动态加载的,所以我们就无法使用爬取静态页面的方式来抓取淘宝商品信息。这里我使用了自动化测试工具selenium来爬取动态页面的商品信息。这里有几个需要注意的地方,因为淘宝首页打开首先是二维码登录界面,所以为了直接通过程序实现登录,我们要利用指令
find_element_by_id('J_Quick2Static').click()
去点击右上角的小电脑图标切换到账号密码登录界面,这样我们就可以实现通过传递账号密码实现自动登录。
在爬取的时候需要注意的是,有些商品信息,只有在下拉滑动条的时候才会自动加载,而且要注意下拉的长度,否则加载的数据是不完整的,这就导致有些数据爬取不到。这里我采用的方法是:输入商品名称点击搜索之后跳转到商品信息列表界面,之后加入下拉滑动块的代码
js="var q=document.documentElement.scrollTop=1000"
firefox_login.execute_script(js)
time.sleep(2)
js="var q=document.documentElement.scrollTop=2000"
firefox_login.execute_script(js)
time.sleep(2)
js="var q=document.documentElement.scrollTop=3000"
firefox_login.execute_script(js)
time.sleep(2)
js="var q=document.documentElement.scrollTop=4000"
firefox_login.execute_script(js)
time.sleep(2)
js="var q=document.documentElement.scrollTop=5000"
firefox_login.execute_script(js)
time.sleep(2)
js="var q=document.documentElement.scrollTop=6000"
firefox_login.execute_script(js)
time.sleep(2)
js="var q=document.documentElement.scrollTop=7000"
firefox_login.execute_script(js)
time.sleep(2)
这里要注意不能一次性下拉到底部