Я участвую в творческом конкурсе «Праздник середины осени».Творческий конкурс «Праздник середины осени»
предисловие
Если рабочий хочет хорошо работать, он должен сначала заточить свои инструменты.
В этом выпуске мы используем 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и другие тестовые сценарии на разных языках.
установка селена
Выберите версию, соответствующую вашему компьютеру, для загрузки
установить селен
Разархивируйте его в корневой каталог установки Python.
текст
Создать экземпляр объекта браузера
driver = webdriver.Chrome()
driver.get('https://www.jd.com')
Определить ключевые слова для поиска
Откройте браузер, и вы найдете формат URL
функция поиска
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)
Разобрать данные о продукте
Благодаря позиционированию обнаруживается, что продукты имеютgl-itemАтрибуты
Получить коллекцию товаров
# 解析商品数据
def parse_product():
# 拿到商品集合
lis = driver.find_elements_by_css_selector('.gl-item')
Разобрать название продукта
Благодаря позиционированию выясняется, что название продукта находится в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
Анализировать цены на товары
Посредством позиционирования выясняется, что цены на товары находятся в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 + '元'
Проанализируйте количество отзывов о продукте
Посредством позиционирования выясняется, что цены на товары находятся в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
Разобрать название магазина
Посредством позиционирования выясняется, что цены на товары находятся в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-файл. Поиск не ограничивается лунными тортами, но также может использоваться для других продуктов.
PS: данные, просканированные в этой статье, не содержат конфиденциальных данных. Это руководство предназначено только для изучения и использования. Оно строго занимается незаконной деятельностью, а легальная сеть небрежна без упущений.