经常听一些同学说爬淘宝很难,今天就带大家攻破淘宝各种反爬手段!并成功采集到淘宝上的数据。
声明:
由于某些原因,我这里会用手机代替,其实是一样的!
环境
- windows
- python3.6.5
模块:
- time
- selenium
- re 环境与模块介绍完毕后,就可以来实行我们的操作了。
第一步:
进入淘宝首页:
driver = webdriver.Chrome()
driver.get('http://www.taobao.com')
第二步:
在输入框中,输入想要查找的商品(keyword),往后用手机代替。 点击搜索按钮
driver.find_element_by_id('q').send_keys(keyword)
driver.find_element_by_class_name('btn-search').click()
它会跳转到我们的登陆界面:
我们选择扫码登陆,那么既然要扫码,肯定就需要等待时间。一般提供10S即可,取决于你单身的年龄
time.sleep(10)
登陆后,我们跳转到了 含有信息的页面:
第三步:
提取出我们需要的信息,价格、订单量、商品信息、卖家地址:
容易发现我们的商品信息都是包括在了class属性为item J_MouserOnverReq 的div标签当中。
所以可以写出我们的xpath规则:
info = li.find_element_by_xpath('.//div[@class="row row-2 title"]').text
price = li.find_element_by_xpath('.//a[@class="J_ClickStat"]').get_attribute('trace-price') + '元'
deal = li.find_element_by_xpath('.//div[@class="deal-cnt"]').text
name = li.find_element_by_xpath('.//div[@class="shop"]/a/span[2]').text
position = li.find_element_by_xpath('.//div[@class="row row-3 g-clearfix"]/div[@class="location"]').text
第四步:
第一页采集完毕后,我们需要进行翻页操作。
记住,这里千万不要去模拟点击下一页,会被反爬虫策略命中!
我们可以构造url,
很容易发现我们的url的步长为44,并且总页数为100。那么我们可以先提取出我们的总页数:
token = driver.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[1]')
token = token.text
token = int(re.compile('(\d+)').search(token).group(1))
然后循环构造url:
num = 1
while num != token - 1:
driver.get('https://s.taobao.com/search?q={}&s={}'.format(keyword, 44 * num))
driver.implicitly_wait(10)
drop_down()
get_product()
num += 1
效果:
少儿不宜
好了今天的教程到此结束,希望对你有所帮助!欢迎评论留言讨论!