当前位置: 首页 > wzjs >正文

网站是用dw做的吗网站建设 技术规范书

网站是用dw做的吗,网站建设 技术规范书,拟在建项目信息网官网,添加数据库wordpress实验要求:利用pythonselenium实现Google Play Store应用信息爬虫apk下载。 其中: 1、热门应用列表包含200个app,需要点击右侧按钮滑动产生下一页数据,所以需要Selenium来控制页面操作。 2、每个应用的爬虫信息包括:ap…

实验要求:利用python+selenium实现Google Play Store应用信息爬虫+apk下载。
在这里插入图片描述
其中:
1、热门应用列表包含200个app,需要点击右侧按钮滑动产生下一页数据,所以需要Selenium来控制页面操作。
2、每个应用的爬虫信息包括:app名、详情页链接、应用评分、评论数、下载量。

实验使用的各个工具版本

selenium 4.1.1
chrome浏览器版本 125.0.6422.113 (查看方式:浏览器右上角——设置——关于chrome)
chromedriver 125.0.xx

因为selenium4.x版本与selenium3.x版本的api略有不同,版本与api调用不匹配会造成警告或报错,建议选用4.x版本的

selenium安装与使用

Selenium是一个功能强大的自动化测试工具,主要用于Web应用程序的测试和网页爬虫,比如用于爬取网页上的数据,抓取网页内容、分析页面结构、提取信息等。
Selenium使用教程: selenium入门超详细教程——网页自动化操作

在pycharm终端执行:

# 安装4.1.1版本
pip3 install selenium==4.1.1

安装chromedriver

安装chromedriver需要注意浏览器版本对应问题。
如果自己的chrome浏览器版本很新,上面的教程里没有对应的网站,可以去这个网站里找下载链接——Chrome for Testing availability

在这里选择合适版本的chromedriver,打开对应网址即可下载。
在这里插入图片描述
注:如果下载了对应版本的chromedriver,运行driver.get()时还是有网页闪退问题需要检查selenium版本是否安装了较高的版本,我实验时最开始安装的4.21.x会有闪退的情况,后面卸载了重装了一个4.1.1版本的selenium,解决了闪退问题。

//卸载selenium  
pip uninstall selenium
//下载4.1.1版本
pip3 install selenium==4.1.1

google play store热门应用列表爬虫

使用chromedriver打开网页

【注意这里是selenium4.x版本的写法 如果你的selenium是3.x版本可能代码略有不同】
代码中需要先指定chromedriver的存放位置。然后在初始化webdriver时传入参数service=s。
如果爬虫过程中需要最大化窗口(小窗口遮挡了某些元素时,比如遮挡了Button不能点击,无法获取对应数据,需要改变初始窗口大小),需要在打开网站之前进行窗口大小设置

# 指定chromedriver存储地址
chromedriver_path = r"D:\ChromeDriver\chromedriver.exe"
# 初始化 ChromeDriver 服务
s = Service(chromedriver_path)
# 初始化 WebDriver
driver = webdriver.Chrome(service=s)
# 必须最大化窗口 不然不能点击按钮滑动界面
driver.maximize_window()        #最大化窗口
# 指定要爬虫的网站地址
target_web_site = 'https://play.google.com/store/apps'
# 指定要爬虫的网站地址
target_web_site = 'https://play.google.com/store/apps'# 打开页面
page = driver.get(target_web_site)

控制网页滑动到指定位置

因为我需要的数据在页面下方,所以打开网页后还需要下滑一些距离,这样方便调试时观察。

# 设置滚动一定的像素距离
pixels_to_scroll = 300
driver.execute_script(f"window.scrollTo(0, {pixels_to_scroll});")
time.sleep(2)

注意爬虫时要尽量等待页面加载完成,以免数据没有渲染出来。

使用css选择器定位元素

在爬虫获取数据时,通常需要定位到信息所在的标签,然后通过标签的某个属性拿到信息的具体值。这个过程可以通过下面几种方式完成,但都需要driver.find_elements方法实现。
1、XPath
通过在页面上定位需要的标签值,然后右键——copy——选择copy xpath
在这里插入图片描述

2、CSS selector
同理,通过在页面上定位需要的标签值,然后右键——copy——选择copy selector

3、标签名
适用于标签名很特殊的情况,比如很多嵌套div的结构中出现了a标签,就可以直接指定a标签找到对应元素。

copy到对应筛选方式的值之后,在代码中执行:
(我这里复制的是css selector)

# 寻找目标标签的位置 复制选择器
swipeRight_selector = '#yDmH0d > c-wiz.SSPGKf.glB9Ve > div > div > div.N4FjMb.Z97G4e > c-wiz > div > c-wiz > c-wiz:nth-child(3) > c-wiz > section > div > div > div > div > div > div.hWUu9.n1lOjd.CrjwJd.Z3h6Kb.adMLdd > button'
isButtonActive = len(driver.find_elements(by=By.CSS_SELECTOR, value=swipeRight_selector))

控制鼠标悬浮在某个位置

由于我要获取的数据要不断的点击右侧的翻页按钮,且这个按钮在鼠标悬浮之前是隐藏的。
所以我需要在每次翻页之前,把鼠标悬停在这个列表所在的div容器内。
在这里插入图片描述
方法与上面定位的一样,然后使用ActionChains的move_to_element实现即可。

# 定位到想要悬停的元素
element_to_hover = driver.find_element(By.CSS_SELECTOR, '#yDmH0d > c-wiz.SSPGKf.glB9Ve > div > div > div.N4FjMb.Z97G4e > c-wiz > div > c-wiz > c-wiz:nth-child(3) > c-wiz > section > div > div > div > div > div')
# 创建 ActionChains 对象
actions = ActionChains(driver)
# 调用 move_to_element 方法来模拟鼠标移动到元素上
actions.move_to_element(element_to_hover).perform()

模拟点击滑动按钮

由于这个排行榜是有限的,需要不断点击右侧按钮获取下一页数据,才能拿到完整的信息,否则信息是不全的,所以在获取数据之前还要控制页面滑动到最后一页。

# 寻找目标标签的位置 复制选择器
swipeRight_selector = '#yDmH0d > c-wiz.SSPGKf.glB9Ve > div > div > div.N4FjMb.Z97G4e > c-wiz > div > c-wiz > c-wiz:nth-child(3) > c-wiz > section > div > div > div > div > div > div.hWUu9.n1lOjd.CrjwJd.Z3h6Kb.adMLdd > button'
isButtonActive = len(driver.find_elements(by=By.CSS_SELECTOR, value=swipeRight_selector))
count = 1
print("len:",isButtonActive)
while isButtonActive>0:actions.move_to_element(element_to_hover).perform()swipeRight_button = driver.find_element(by=By.CSS_SELECTOR, value=swipeRight_selector)swipeRight_button.click()print(f'这是第{count}页...')count += 1time.sleep(1)isButtonActive = len(driver.find_elements(by=By.CSS_SELECTOR, value=swipeRight_selector))
print(f'收集完成 共{count}页数据')

定位热门应用的数据

同上,定位热门应用的列表位置,注意这里用driver.find_elements,加了s,返回值是一个列表。

# 找热门应用
base_css_selector = 'section > div > div > div > div > div > div.aoJE7e.b0ZfVe > div.ULeU3b.neq64b'# 使用列表推导式和 f-string 来构建多个选择器,并找到对应的元素elements = driver.find_elements(by=By.CSS_SELECTOR, value=base_css_selector)# selenium 3.x的写法# elements = driver.find_elements_by_css_selector(base_css_selector)print(f"target_div_len:{len(elements)}")

google play store热门应用列表信息处理

找到对应元素之后,处理元素属性值即可获取信息。

google play store对应apk下载

方法:在APKCombo上根据对应包名(前面爬虫获取的)找到对应的网址进行下载
参考:利用python selenium动态爬取Google play store apks


文章转载自:

http://5DFJfzrz.jLgjn.cn
http://rTqSZ98r.jLgjn.cn
http://y1E96Qrx.jLgjn.cn
http://a8ow8325.jLgjn.cn
http://p7W6ZQla.jLgjn.cn
http://0SoVhuS4.jLgjn.cn
http://y76JAAJK.jLgjn.cn
http://wD0o7Kl5.jLgjn.cn
http://C6Q5ab0z.jLgjn.cn
http://FNwRKLZo.jLgjn.cn
http://IkCngHQU.jLgjn.cn
http://HvLHPya0.jLgjn.cn
http://qnL8Krp7.jLgjn.cn
http://oBbRqqFT.jLgjn.cn
http://NOviHXRZ.jLgjn.cn
http://Jfv50fj9.jLgjn.cn
http://EJ5bL36R.jLgjn.cn
http://AgvCEbDr.jLgjn.cn
http://zDukVsYP.jLgjn.cn
http://R88FAWBm.jLgjn.cn
http://Ozmbh9gR.jLgjn.cn
http://Su8jUsUd.jLgjn.cn
http://uukeeCtR.jLgjn.cn
http://0PHIsKHg.jLgjn.cn
http://Jl0go2CQ.jLgjn.cn
http://wnQq1OJk.jLgjn.cn
http://UxUQlzM8.jLgjn.cn
http://izn1IoR5.jLgjn.cn
http://3ET6gU96.jLgjn.cn
http://RVwwq54p.jLgjn.cn
http://www.dtcms.com/wzjs/776947.html

相关文章:

  • 维护网站企业建设官方网站作用及意义
  • 阿里云 部署网站电商网站的付款功能
  • 自己做一个音乐网站怎么做购物网站优惠券怎么做
  • 网站seo在线优化想自己开网店怎么注册
  • 潍坊企业网站制作个人又什么办法做企业网站
  • phpcms做网站建栏目网站搭建合作协议
  • 东盟建设工程有限公司网站关于机关单位网站的建设
  • 江苏省建设执业资格中心网站安庆微信网站开发
  • 企业网站建设能开广告服务费吗短链接生成方案
  • 电气建设网站wordpress小程序教程
  • 中国建设银行大学助学贷款网站网站续费要多少钱
  • 网站设计与建设公司如何在国外建设网站
  • 哪些网站是django做的网站域名注册信息
  • 查询网站有没有备案网站建设及维护
  • 如何加强校园网站建设跨境电商网站如何做推广
  • 要怎么网站做推广折叠网站开发工程师
  • 网站会员功能介绍wordpress author.php
  • 网站建设禁止性规定域名做网站
  • 网站载入页面怎么做遵义网站页设计制作
  • 各种大型网站集团网站目标
  • 新乡网站建设求职简历深圳最新新闻事件
  • 门户网站名词解释做网站补贴
  • 网站栏目结构网站特效 站长
  • php开发手机端网站开发制作动画的网站模板
  • 怎么用pf做网站网站排名优化服务公司
  • 桂平网站设计网站开发培训费多少
  • 大学网站建设情况汇报注册一个网站多少钱?
  • wordpress搭建个人网站费用苏州做淘宝网站
  • 浙江网站建设公司地址荆门做微信公众号的网站
  • 销售网站设计商城网站 个人备案