[Python] Научу вас использовать селен для сканирования данных лунного пирога определенного востока.

задняя часть Python
[Python] Научу вас использовать селен для сканирования данных лунного пирога определенного востока.

Я участвую в творческом конкурсе «Праздник середины осени».Творческий конкурс «Праздник середины осени»

предисловие

Если рабочий хочет хорошо работать, он должен сначала заточить свои инструменты.

В этом выпуске мы используем Pycharm + python3.7.9 + selenium для сканирования информации, такой как лунные пирожные Jingdong.Информация для сканирования не ограничивается лунными пирожными, но может касаться всех продуктов, продаваемых на Jingdong.

Selenium (инструмент автоматизированного тестирования WEB)

Selenium [1] это тестирование веб-приложенийинструмент. Selenium-тесты запускаются прямо в браузере, как настоящий пользователь. Поддерживаемые браузеры включаютIE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera, Эдж и др. Основные функции этого инструмента включают в себя: Проверка совместимости с браузерами — проверьте свое приложение, чтобы увидеть, хорошо ли оно работает в разных браузерах и операционных системах. Проверка функциональности системы. Создавайте регрессионные тесты для проверки функциональности программного обеспечения и требований пользователей. Поддерживает автоматическую запись действий и автоматическую генерацию .Net,Java,Perlи другие тестовые сценарии на разных языках.

установка селена

адрес загрузки селена

Выберите версию, соответствующую вашему компьютеру, для загрузки

image.png

установить селен

Разархивируйте его в корневой каталог установки Python.

image.png

текст

Создать экземпляр объекта браузера

driver = webdriver.Chrome()
driver.get('https://www.jd.com')

Определить ключевые слова для поиска

Откройте браузер, и вы найдете формат URL

image.png

функция поиска

def get_product(key):
    # 定位到搜索框
    driver.find_element_by_css_selector('#key').send_keys(keyword)
    # 定位到搜索按钮
    driver.find_element_by_css_selector('.button').click()
    # 防止超时,等待加载,设置为10S
    driver.implicitly_wait(10)
    # 最大化浏览器效果

Решить ленивую загрузку изображения

# 解决懒加载
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)

Разобрать данные о продукте

image.pngБлагодаря позиционированию обнаруживается, что продукты имеютgl-itemАтрибуты

Получить коллекцию товаров

# 解析商品数据
def parse_product():
    # 拿到商品集合
    lis = driver.find_elements_by_css_selector('.gl-item')

Разобрать название продукта

image.pngБлагодаря позиционированию выясняется, что название продукта находится вp-nameвнизemна этикетке

# 解析商品数据
def parse_product():
    # 拿到商品集合
    lis = driver.find_elements_by_css_selector('.gl-item')

    for li in lis:
      try:
        # 商品名称
        product_name = li.find_element_by_css_selector('div.p-name a em').text

Анализировать цены на товары

image.pngПосредством позиционирования выясняется, что цены на товары находятся вp-priceвнизiна этикетке

# 解析商品数据
def parse_product():
    # 拿到商品集合
    lis = driver.find_elements_by_css_selector('.gl-item')

    for li in lis:
      try:
        # 商品名称
        product_name = li.find_element_by_css_selector('div.p-name a em').text
        # 商品价格
        product_price = li.find_element_by_css_selector('div.p-price strong i').text + '元'

Проанализируйте количество отзывов о продукте

image.pngПосредством позиционирования выясняется, что цены на товары находятся вp-commitвнизaна этикетке

# 解析商品数据
def parse_product():
    # 拿到商品集合
    lis = driver.find_elements_by_css_selector('.gl-item')

    for li in lis:
      try:
        # 商品名称
        product_name = li.find_element_by_css_selector('div.p-name a em').text
        # 商品价格
        product_price = li.find_element_by_css_selector('div.p-price strong i').text + '元'
        # 商品评价数量
        product_comment =  li.find_element_by_css_selector('div.p-commit strong a').text

Разобрать название магазина

image.pngПосредством позиционирования выясняется, что цены на товары находятся вspanвнизaна этикетке

# 解析商品数据
def parse_product():
    # 拿到商品集合
    lis = driver.find_elements_by_css_selector('.gl-item')

    for li in lis:
      try:
        # 商品名称
        product_name = li.find_element_by_css_selector('div.p-name a em').text
        # 商品价格
        product_price = li.find_element_by_css_selector('div.p-price strong i').text + '元'
        # 商品评价
        product_comment =  li.find_element_by_css_selector('div.p-commit strong a').text
        # 店铺名称
        product_shop_name = li.find_element_by_css_selector('span.J_im_icon a').text

       #打印数据 
       print(product_shop_name,product_price,product_comment,product_shop_name)

Проанализируйте данные и сохраните их в файл csv.

  with open('data_jd.csv',mode='a',encoding='utf-8',newline='') as f:
      csv_write = csv.writer(f)
      csv_write.writerow([product_name,product_price,product_name,product_shop_name])
except Exception as e:
 print(e)

Суммировать

В конце концов, это руководство завершило операцию сканирования данных о продажах лунных тортов Jingdong и сохранило их в CSV-файл. Поиск не ограничивается лунными тортами, но также может использоваться для других продуктов. image.png

PS: данные, просканированные в этой статье, не содержат конфиденциальных данных. Это руководство предназначено только для изучения и использования. Оно строго занимается незаконной деятельностью, а легальная сеть небрежна без упущений.