1.首先你要down好必要的环境和配置
- IDLE(python编译器)
- Selenium(浏览器自动化测试框架——就是一个自动的browser来模仿用户上网)
- FireFox / Google chrome(browser)
- 良好的学习心态
2.Goal
- 目标web:http://www.17huo.com/
- 关键字:大衣 ?
- 爬出关键字下一页所有的商品数量
3.Procedure / Method
# 导入module,如果无法导入就是没有这个module,去cmd中pip install
import time
from selenium import webdriver
# 初始化browser用Chrome浏览器打开
browser = webdriver.Chrome()
# 设置页面load的超时时间30second
browser.set_page_load_timeout(30)
# 打开带关键字大衣的17huo的url(就是打开17huo搜索大衣那个网址)
browser.get('http://www.17huo.com/newsearch/?k=%E5%A4%A7%E8%A1%A3')
# 用一个脚本让整个网站加载完成,因为如果网站是动态加载的不加载完无法爬
browser.execute_script("window.scrollTo(0,document.body.scrollHeight);")
# 为了上一条语句完成,设置sleep
time.sleep(5)
# 从网页源码可以看到每类商品都是一个class book_item_list_box,先定位到它的上一层(一定要是父层),再数每一个class
# 注意:定位是find_element,数class是find_elements,少一个s多一个s都会报错
goods = browser.find_element_by_css_selector('#book_item_list').find_elements_by_class_name('book_item_list_box')
print(len(goods))
-
通过检查看源码
-
找到定位的css语句
3.找到父层,右键选择COPY,选择copy selector,就可以得到代码中的browser.find_element_by_css_selector(’#book_item_list’)括号中的东西
-
找到子层
可以看到子层都是class book_item_list_box’ 得到find_elements_by_class_name(‘book_item_list_box’)
4.Outcome
得到我们要的商品数量