python +selenium web自动化的练习,,获取微博热搜,获取华为商城的热销商品,查看51 job的软件工程师岗位

获取微博热搜,python

  • Selenium学习笔记(可参考别人的总结)
  • 题目要求
    • 华为商城查看有哪些菜单和爆款商品
  • 微博热搜,获取热,新,爆的热搜话题
    • 代码
  • 51 job 自动化练习,搜索杭州,1-3年经验的软件工程师岗位
  • 代码

Selenium学习笔记(可参考别人的总结)

链接: link.
链接: link.

题目要求

华为商城查看有哪些菜单和爆款商品

#作业
'''访问: https://www.vmall.com/
获取一级菜单下包含哪些二级菜单
不包含  查看全部然后获取底部,热销单品中所有 顶部 带有 爆款字样的产品名称及价格'''
#xpath方式定位元素练习
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
#访问网址
driver.get('https://www.vmall.com/')
driver.maximize_window()category = driver.find_elements_by_xpath("//ol[@class=\"category-list\"]/li")# for first_Cate in category:
#     #获取每个大类的标题,比如手机,笔记本,平板等
#     print(f"一级菜单: {first_Cate.text}")  #打印一级菜单的内容# ActionChains(driver).move_to_element(first_Cate).perform() #鼠标悬停到一级菜单## sec_category = first_Cate.find_elements_by_xpath(".//ul[@class=\"subcate-list clearfix\"]/li[@class=\"subcate-item\"]")## for sed_Cate in sec_category:#     second_category = sed_Cate.text#     print(f"\t{second_category}")  #打印二级菜单的选项# driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# .send_keys(Keys.END)driver.execute_script("window.scrollBy(0,500)") #滚动页面
time.sleep(1)
driver.execute_script("window.scrollBy(0,9000)") #滚动页面#热销单品,精品推荐,手机等大分类
ele = driver.find_elements_by_xpath("//div[@class=\"h\"]/h2")#热销单品里面没有爆款,所以扩大范围了。
eles = driver.find_elements(By.XPATH, '//li[@class="grid-items"]')
hot_eles = driver.find_elements(By.XPATH, '//li[@class="grid-items"]//p[@class="grid-tips"]')for k in hot_eles:if k.text == '爆款':name = k.find_element(By.XPATH, './../div[@class="grid-title"]').textprice = k.find_element(By.XPATH, './../p[@class="grid-price"]').textprint(f'爆款: {name}, 价格: {price}')# driver.quit()
// css selector 方式定位元素练习
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
#访问网址
driver.get('https://www.vmall.com/')
driver.maximize_window()'''
#为什么一级菜单,不定位到li,也能打印出一级菜单?因为text可以获取到所有后代的文本
'''# category = driver.find_elements_by_css_selector("ol.category-list > li")
# for first_Cate in category:
#     #获取每个大类的标题,比如手机,笔记本,平板等
#     print(f"一级菜单:", first_Cate.find_element_by_css_selector(".category-item-bg span").text)  #打印一级菜单的内容
#
#     time.sleep(0.5)
#     ActionChains(driver).move_to_element(first_Cate).perform() #鼠标悬停到一级菜单
#     #可以鼠标点到Sources   然后悬停鼠标  按ctrl+\就可以暂停下来定位
#
#     sec_category = first_Cate.find_elements_by_css_selector("div.category-panels span")
#     #css selector,如果某个元素的class属性有多个值,可以直接用一个clas值
#
#     for sed_Cate in sec_category:
#         second_category = sed_Cate.text
#         print(f"\t{second_category}")  #打印二级菜单的选项# driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# .send_keys(Keys.END)driver.execute_script("window.scrollBy(0,500)") #滚动页面
time.sleep(1)
driver.execute_script("window.scrollBy(0,9000)") #滚动页面#热销单品,精品推荐,手机等大分类
ele = driver.find_elements_by_css_selector("div.h h2")# #热销单品里面没有爆款,所以扩大范围了。
eles = driver.find_elements(By.CSS_SELECTOR, 'li[class="grid-items"]')
hot_eles = driver.find_elements(By.CSS_SELECTOR, 'li[class="grid-items"] p[class="grid-tips"]')for k in hot_eles:if k.text == '热销爆款':name = k.find_element(By.XPATH, './../div[@class="grid-title"]').textprice = k.find_element(By.XPATH, './../p[@class="grid-price"]').textprint(f'热销爆款: {name}, 价格: {price}')

微博热搜,获取热,新,爆的热搜话题

在这里插入图片描述

代码

// An highlighted block
import time
from selenium import webdriver#创建浏览器驱动对象,这里是打开浏览器
#如果driver路径添加到了环境变量,就不用写driver路径了。
driver = webdriver.Chrome()
#访问网址
driver.get('https://m.weibo.cn/')#点击:大家都在搜
driver.find_element_by_class_name('m-search').click()
time.sleep(2)#点击:微博热搜榜
hotSearchBlock = driver.find_element_by_class_name('m-col-2') #找到热搜榜所在的大标签
hotSearchSli = hotSearchBlock.find_elements_by_class_name('m-item-box') #在大标签中搜热搜
hotSearchSli[-1].click()  #点击:微博热搜榜,它必然是在最后一个
time.sleep(1)#定位到实时热点,每分钟更新一次新闻列表 card list
hotSli = driver.find_element_by_css_selector("#app > div:nth-child(1) > div:nth-child(2) > div:nth-child(3) > div>div")
#card list,每个热搜标题都有card4这个class
hotDivSli = hotSli.find_elements_by_class_name("card4")for hotDiv in hotDivSli: #每个热搜标题# 判断热搜标题是否有图片标签,热,沸,新iconSli = hotDiv.find_elements_by_class_name("m-link-icon")# 如果有图片标签if iconSli:#获取img标签img = iconSli[0].find_element_by_tag_name("img")#获取src属性srcLink = img.get_attribute("src")# print(srcLink)#判断图片类型if "hot" in srcLink:hotType = "热"hotText = hotDiv.find_element_by_class_name("main-text").textprint(f'{hotType}:{hotText}')elif "new" in srcLink:hotType = "新"hotText = hotDiv.find_element_by_class_name("main-text").textprint(f'{hotType}:{hotText}')elif "fei" in srcLink:hotType = "沸"hotText = hotDiv.find_element_by_class_name("main-text").textprint(f'{hotType}:{hotText}')
time.sleep(2)
driver.quit()

51 job 自动化练习,搜索杭州,1-3年经验的软件工程师岗位

代码


'''登录 http://www.51job.com点击高级搜索输入搜索关键词 python地区选择 杭州职能类别 选 计算机软件 -> 高级软件工程师工作年限选 1-3 年
搜索职位, 抓取页面信息。 得到如下的格式化信息Python开发工程师 | 杭州纳帕科技有限公司 | 杭州 | 0.8-1.6/| 04-27Python高级开发工程师 | 中浙信科技咨询有限公司 | 杭州 | 1-1.5/| 04-27on开发工程师 | 杭州新思维计算机有限公司 | 杭州-西湖区 | 1-1.5/| 04-27'''import time
from selenium import webdriver
#显示等待所需
from selenium.webdriver.common.by import By #设置元素定位使用哪种方法的
from selenium.webdriver.support.ui import WebDriverWait #元素等待类
from selenium.webdriver.support import expected_conditions as EC #提供条件判断函数driver = webdriver.Chrome()
driver.get('http://www.51job.com') #访问网址
driver.maximize_window()driver.find_element_by_css_selector('a.more').click() #点击高级搜索
#输入搜索关键词python
driver.find_element_by_css_selector('input#kwdselectid').send_keys('python')#点击地区
driver.find_element_by_css_selector('input#work_position_input').click()
#点击热门城市
driver.find_element_by_css_selector('li#work_position_click_center_left_each_000000').click()#清空原来选择的城市
pre_city = WebDriverWait(driver, 3, 0.5).until(EC.visibility_of_element_located((By.CSS_SELECTOR, 'div[class="de d1"]  em'))
)
pre_city.click()
#driver.find_element_by_css_selector('div#work_position_click_multiple_selected > span').click()#选择杭州
driver.find_element_by_id('work_position_click_center_right_list_category_000000_080200').click()
#点击确定,确定城市为杭州
driver.find_element_by_css_selector('span#work_position_click_bottom_save').click()#python相关关键字,此处会遮挡职业类别
driver.find_element_by_css_selector('span[class="bg b_key"]').click()
#点击职能类别的+号
driver.find_element_by_id('funtype_click').click()
#点击计算机/互联网/通信/电子
driver.find_element_by_id('funtype_click_center_left_each_0100').click()
#点击后端开发
driver.find_element_by_id('funtype_click_center_right_list_category_0100_0100').click()
#点击高级软件工程师
driver.find_element_by_id('funtype_click_center_right_list_sub_category_each_0100_0106').click()
#点击确定
driver.find_element_by_id('funtype_click_bottom_save').click() #点击确定#展开工作年限下拉框
driver.find_element_by_css_selector('#workyear_list span[class="ic i_arrow"]').click()
#1-3年
driver.find_element_by_css_selector('#workyear_list span:nth-child(3)').click()#点击搜索按钮
driver.find_element_by_css_selector('div[class="btnbox p_sou"] .p_but').click()#搜索列表结果
job_list = WebDriverWait(driver, 3, 0.5).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.j_joblist div.e"))
)
#job_list = driver.find_elements_by_css_selector('div.j_joblist div.e')# Python开发工程师 | 杭州纳帕科技有限公司 | 杭州 | 0.8-1.6/| 04-27
for job in job_list:# job_title = job.find_element_by_xpath('./a/p/span[1]')job_title = job.find_element_by_css_selector('span[class="jname at"]')company = job.find_element_by_css_selector('a[class="cname at"]')salary = job.find_element_by_css_selector('span[class="sal"]')location_info = job.find_element_by_css_selector('span[class="d at"]')location = location_info.text.split('|')[0].strip()people_num = job.find_element_by_xpath('./div[@class="er"]/p[@class="dc at"]')people_num = people_num.text.split('|')[-1].strip()job_time = job.find_element_by_css_selector('span[class="time"]') #发布时间print(f'{job_title.text} | {company.text}  | {location} | {salary.text} | {people_num} |{job_time.text[:-2]}')driver.quit()


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部