参考:
静觅丨崔庆才的个人博客
项目地址:
copywang/spiders_collection
实现功能:
- 使用geckodriver驱动firefox访问淘宝首页,输入关键词,点击搜索按钮,翻页,点击确定按钮,采集信息,存储到mongodb,导出成CSV文件,统计程序运行时间
- 使用selenium的WebDriverWait(browser,10).until(expected_conditions.条件((By.条件,'条件')))方法,判断输入框是否加载完成,搜索按钮是否出现
- 使用send_keys()方法,输入关键字,使用click()方法,点击搜索
- 获取第1页的产品信息
- 使用第2步的方法,判断总页数是否出现,用text方法返回string
- 翻页的方法使用,使用第2步的方法,判断输入框是否出现,确定按钮是否出现,调用clear()方法清空输入框,send_keys()方法输入页码,click()方法点击按钮
- 使用第2步的方法,判断高亮的页码是否为翻页需要的页码
- 每获取1页翻页,就获取1页产品信息
- 产品信息的解析,使用pyquery库,首先使用第2步的方法,判断整个页面加载完成,即产品框的frame都出现了
- 提取需要的产品信息字段,存储到MONGODB
遇到的问题:
- Chrome版本和ChromeDriver不匹配,改为使用firefox
- 使用PhantomJS报错,设置窗口大小后解决
- 从mongodb导出到csv文件,首次打开为乱码,用的是utf-8 without BOM编码,windows下需要使用utf-8,用notepad++打开csv文件设置一下编码保存即可
- 从firefox复制的CSS选择器格式错误,改用chrome
- 使用PhantomJS程序的运行时间: 251.23947518380507,而使用firefox的程序的运行时间: 143.89224086472169,所以其实并不是无界面浏览器就快
- 图片链接没有抓取完全,提取图片信息属性的时候应该直接使用data-src
收获
- 初步学会使用selenium采集JS渲染的页面
- mongodb导出
- CSS选择器使用