zoukankan      html  css  js  c++  java
  • selenium五十行代码自动化爬取淘宝

    先看一下代码,真的只是五十行:

     1 # coding=gbk
     2 
     3 from selenium import webdriver
     4 import time
     5 
     6 options = webdriver.ChromeOptions()
     7 options.add_argument(r'--user-data-dir=C:UserslwyAppDataLocalGoogleChromeUser DataDefault')
     8 options.add_experimental_option('excludeSwitches', ['enable-automation'])
     9 driver = webdriver.Chrome(options=options)
    10 driver.get('https://www.taobao.com/')
    11 
    12 
    13 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
    14            'Referer': 'https://www.taobao.com/'}
    15 
    16 
    17 def request_page():
    18     driver.find_element_by_xpath('//*[@id="q"]').send_keys('男装')
    19     time.sleep(3)
    20     driver.find_element_by_xpath('//*[@id="J_TSearchForm"]/div[1]/button').click()
    21     time.sleep(5)
    22     # 控制页数
    23     for i in range(5):
    24         # 获取每页存放所有商品的div
    25         all_thing_div = driver.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]')
    26         # 获取每个商品的div列表
    27         thing_div_list = all_thing_div.find_elements_by_xpath('./div')
    28         # 依次获取每个商品的信息
    29         for thing_div in thing_div_list:
    30             info_div_list = thing_div.find_element_by_css_selector('.ctx-box').find_elements_by_xpath(
    31                 './div')  # 获取每个商品下面信息的4个div
    32             price = info_div_list[0].find_element_by_xpath('./div[1]/strong').text  # 单价
    33             customer = info_div_list[0].find_element_by_xpath('./div[@class="deal-cnt"]').text  # 购买数量
    34             thing_name = info_div_list[1].find_element_by_xpath('./a').text
    35             thing_lianjie = info_div_list[1].find_element_by_xpath('./a').get_attribute('href')
    36             store_name = info_div_list[2].find_element_by_xpath('./div[1]/a/span[2]').text
    37             store_where = info_div_list[2].find_element_by_xpath('./div[2]').text
    38             print("单价:", price, "购买数量:", customer, '商品名称:', thing_name, '店铺名称:', store_name, '店铺所在地', store_where,
    39                   '链接:', thing_lianjie)
    40         print('第{0}页爬取完成'.format(i+1))
    41         if i+1 == 5:
    42             break
    43         driver.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/ul/li[8]/a/span[1]').click()
    44         time.sleep(10)
    45 
    46 
    47 if __name__ == '__main__':
    48     request_page()
    49     driver.close()

    第七行用来加载chrome的配置文件,需要改成自己的路径,可以再chrome的地址栏里输入chrome://version查看,第八行用来绕过淘宝对selenium的检测,request_page是自定义的爬虫函数,主要是利用xpath语法,真的不要太方便,第一个for循环用来控制爬取的页数,第二个for循环用来爬取每一个商品。

    (ps:还是正在努力的小菜鸡,希望大佬执教,,xixiiixi。。。。)

    **********不积跬步无以至千里**********

  • 相关阅读:
    js之自定义鼠标右键菜单
    js之键盘控制div移动
    js之select标签---省市联动小例子
    html之浮动和定位
    java开发简单的用户管理系统
    ASP.NET Web API 2中的属性路由(Attribute Routing)
    ASP.NET Web API中的路由
    Web API 2中的操作结果
    WebApi~通过HttpClient来调用Web Api接口
    Quartz.NET 作业调度
  • 原文地址:https://www.cnblogs.com/liangshian/p/11605044.html
Copyright © 2011-2022 走看看