利用selenium库模拟获取淘宝商品信息的操作
导入必要的库
from selenium import webdriver
import time
import re
模拟进入淘宝页面
先要下载插件chromdriver,然后将插件复制在目录下
driver=webdriver.Chrome() # 这里选用chrome浏览器
driver.get('http:\\www.taobao.com')
搜索商品,获取商品目录的页码数
def search():
driver.find_element_by_id('q').send_keys('口红') #往搜索框输入搜索商品名称
driver.find_element_by_class_name('btn-search').click() #模拟点击搜索摁钮
time.sleep(50) #让你的程序休息50秒,在这50秒内,你需要扫描淘宝二维码完成淘宝登录
token=driver.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[1]').text #找到商品目录的页数的相关文本
token=int(re.compile('\d+').search(token).group(0))#获取商品目录的页数
return token
模拟下拉
def drop_down():
for x in range(1,11,2):
time.sleep(0.5)
j=x/10 # 滑到的位置
js='document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
driver.execute_script(js)
模拟获取每一页的商品信息
def get_product():
divs = driver.find_elements_by_xpath(
'//div[@class="items"]/div[@class="item J_MouserOnverReq "]')
# div class="items"下的div class="item J_MouserOnverReq"
# 返回一个列表,列表元素为div class="item J_MouserOnverReq"的明细
for div in divs:
data=[]
#以下是当前目录下div class 属性
info = div.find_element_by_xpath('.//div[@class="row row-2 title"]').text
data.append(info)
# 付款金额
price = div.find_element_by_xpath(
'.//div[@class="price g_price g_price-highlight"]/strong').text+'元'
data.append(price)
# 付款人数(销售数)
number = div.find_element_by_xpath('.//div[@class="deal-cnt"]').text
data.append(number)
location = div.find_element_by_xpath('.//div[@class="location"]').text
data.append(location)
img= div.find_element_by_xpath('.//div[@class="pic"]/a/img').get_attribute('src')
data.append(img)
datas.append(data)
return datas
# datas 是一个大列表,里面的每个小列表代表一个商品的数据信息
模拟翻页
def next_page():
token=search()
num=0
while num !=token-1:
driver.get('https://s.taobao.com/search?q=口红&s={}'.format(44*num))
driver.implicitly_wait(20) #20秒内(不一定是20秒)
num+=1
drop_down()
alldata=get_product()
return alldata
调用函数,开始爬取信息
if __name__=='__main__':
datas=[]
alldata=next_page()
print(alldata)
本文爬取的是口红数据,下一步将清洗数据,请看下一篇!!!