xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

selenium & python

selenium & python

A browser automation framework and ecosystem

https://github.com/SeleniumHQ/selenium

https://selenium.dev/

Selenium automates browsers

自动化Web应用程序以进行测试

demos

https://github.com/huaisha1224/Selenium-Example


#!/usr/bin/env python3
#encoding = utf-8

from selenium import webdriver
import time
import csv

def buff_pubg():
    pubg_price = {}
    for page in range(1,13):
        url = ('https://buff.163.com/market/?game=pubg#tab=selling&page_num=%s&sort_by=price.desc' %page)
        print('第%s页:'%page,url)
        pubg_headers = ['name','money']
        driver = webdriver.Firefox()
        driver.get(url)

        for i in range(1,21):
            #获取饰品名称和价格
            try:
                name = driver.find_element_by_xpath(
                    ('/html/body/div[6]/div/div[4]/div[1]/ul/li[%s]/h3/a') %i)
                money = driver.find_element_by_xpath(
                    ('/html/body/div[6]/div/div[4]/div[1]/ul/li[%s]/p/strong') %i)
                pubg_price[name.text] = money.text[1:] #把饰品名称和对应的价格写入到字典里面
            except:
                pass

        driver.close()
    #print(len(buff))
    #写入内容到csv文件
    try:
        with open('buff_pubg.csv', 'a+', newline='') as csvfile:
            writer = csv.DictWriter(csvfile, fieldnames=pubg_headers)
            writer.writeheader()
            for k,v in pubg_price.items():
                #print(k,v)
                writer.writerow({'name': k, 'money': v})
            csvfile.close()
    except:
        pass

def buff_dota2():
    dota2_price = {}
    for page in range(1,327): #327
        url = ('https://buff.163.com/market/?game=dota2#tab=selling&page_num=%s&sort_by=price.desc' %page)
        print('第%s页'%page, url)
        dota2_headers = ['name','money']
        dota2_driver = webdriver.Firefox()
        dota2_driver.get(url)

        for i in range(1,21):
            #获取Dota2饰品价格
            try:
                dota2_name = dota2_driver.find_element_by_xpath(
                    ('/html/body/div[6]/div/div[4]/div[1]/ul/li[%s]/h3/a') %i)
                dota2_money = dota2_driver.find_element_by_xpath(
                    ('/html/body/div[6]/div/div[4]/div[1]/ul/li[%s]/p/strong') %i)
                dota2_price[dota2_name.text] = dota2_money.text[1:]
                #print(dota2_price)
            except:
                pass

        dota2_driver.close()
    #print(dota2_price)
    #把内容写入csv文件
    try:
        with open('buff_dota2.csv', 'a+', newline='') as csvdota2:
            writer = csv.DictWriter(csvdota2,fieldnames=dota2_headers)
            writer.writeheader()
            for k,v in dota2_price.items():
                #print(k,v)
                writer.writerow({'name':k, 'money':v})
            csvdota2.close()
    except:
        pass

if __name__ == '__main__':
    #buff_pubg()
    buff_dota2()




posted @   xgqfrms  阅读(173)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-01-03 Mac & how to uninstall LANDesk
2019-01-03 vue router
2016-01-03 Linux systemctl & systemd All In One
2016-01-03 从 Windows 系统 到 Linux 系统之旅 All In One
2016-01-03 2015 - 2020 最新 Linux 命令大全 All In One
2016-01-03 Emacs和Vim:神的编辑器和编辑器之神, 到底哪个更好?
点击右上角即可分享
微信分享提示