经常听一些同学说爬淘宝很难,今天就带大家攻破淘宝各种反爬手段!并成功采集到淘宝上的数据。

声明:

由于某些原因,我这里会用手机代替,其实是一样的!

环境

  • 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

效果:

少儿不宜

好了今天的教程到此结束,希望对你有所帮助!欢迎评论留言讨论!