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

什么是静态网页和动态网页/手机优化是什么意思

什么是静态网页和动态网页,手机优化是什么意思,wordpress 发布站,网站建设 公司新闻前言我们在爬取网页时经常会遇到动态渲染页面,对于普通的Ajax,可以利用requests和urllib来实现数据爬取,但是javascript不止ajax一种,其规律有时很难发现,这一过程也会浪费很多时间。而selenium可以模拟浏览器执行特定…

be99c569b9799459c0162477e1c662b1.png

前言

我们在爬取网页时经常会遇到动态渲染页面,对于普通的Ajax,可以利用requests和urllib来实现数据爬取,但是javascript不止ajax一种,其规律有时很难发现,这一过程也会浪费很多时间。而selenium可以模拟浏览器执行特定的动作,这样就不用在乎javascript是如何渲染页面了。本次的实验对象是京东商品的评论,网址如下:

【ThinkPad】联想ThinkPad E580 15.6英寸轻薄窄边框笔记本电脑ibm大屏办公笔记本 英特尔酷睿 i5-7200U 8G 256G 1WCD【行情 报价 价格 评测】-京东​item.jd.com
6ce591942ccaf2d02a78261168c9cc8a.png

当然你也可以使用selenium模拟浏览器在京东网页中搜索相关商品,操作也比较简单。所以我们专注讲解爬取商品评论的核心代码。

环境准备

1.我使用的编译器是pycharm

首先需要selenium库来模拟浏览器执行相关操作

在解析页面内容时我们会用到pyquery。

两个库可直接在anaconda中添加。

2.为方便以后selenium的学习,建议下载Splash

Splash是一个Javascript渲染服务,相当于一个轻量级的浏览器。

下载Splash前需要下载docker,官网下载地址如下:

https://www.docker.com/products/docker-desktop


下载前需要注册,如果是Win10专业版可以直接安装成功,Win10家庭版的话还需要安装hyper-V服务,将如下复制到.cmd文件中以管理员身份执行,完成hyper-V安装。

pushd "%~dp0"
dir /b %SystemRoot%servicingPackages*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%servicingPackages%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

安装后查看Windows功能,可以看到hyper-v:

1d2e47d984adb61bcdf15a523f53c5bc.png

随后还要伪装成专业版,不然安装时还会报错,方法是:

打开注册表,定位到HKEY_LOCAL_MACHINEsoftwareMicrosoftWindows NTCurrentVersion,点击current version,在右侧找到EditionId,右键点击EditionId 选择“修改“,在弹出的对话框中将第二项”数值数据“的内容改为Professional,然后点击确定。再安装docker.exe文件即可正常安装。

然后在终端输入如下代码安装splash:

docker run -p 8050:8050 scrapinghub/splash

即可安装splash。

代码实战

1.观察商品界面,找到评论处,发现html后面会加上'#html',我们爬取时可以直接从这个页面中爬取。

b0e2d1d0bd670c96dc547e54ff80c45e.png
商品评论

爬取思路是先获取评论页面,并可以执行翻页功能,核心就是找到‘下一页’按钮。

右键‘下一页’,点击检查,获取节点信息:

f9d580efedce5877d8056675adf232d3.png

可以看到它的父元素的class为ui=page,他的class为'ui-pager-next',爬取代码如下:

def commodity_page(page):print('正在爬取第', page, '页')try:url = 'https://item.jd.com/46339527372.html#comment'browser.get(url)if page == 1:browser.maximize_window()  #避开右下角图标try:next_page = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.ui-page>a.ui-pager-next')))except:next_page = 0print(next_page)# ActionChains(browser).move_to_element(next_page).perform()## ActionChains(browser).move_to_element(mouse).perform()time.sleep(3)browser.get(url)get_comments()if next_page != 0:# time.sleep(3)next_page = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.ui-page>a.ui-pager-next')))next_page.click()page = page+1commodity_page(page)  #获取评论信息else:print('已经是最后一页')returnexcept TimeoutException:print('连接超时')

代码量不多,但是有两个大坑。第一个坑如下:

1f4c1d09bd54902605514f0903a052ea.png

报错的意思就是'下一页'按钮被覆盖,观察界面,它被右下角的图标覆盖,如下图。

d1fc059c362b3b353322300b20c14405.png

打开浏览器,要想去掉它,可以通过点击叉号或者鼠标悬停一段时间然后移出,但是更简单的方法是改变浏览器大小,直接避开了这个问题。代码如下:

browser.maximize_window()

第二个坑是在爬取第三页的时候报错

524788fc1488482a0527992d7165c54f.png

这里必须重新寻找下一页的按钮,否则只能爬取两页的数据。

2.获取评论信息

同样的方法查找评论具体信息的节点的class为comment-0,然后通过pyquery解析界面,筛选出评论内容,代码如下:

html = browser.page_sourcedoc = pq(html)items = doc('#comment-0').items()for item in items:comment = {'content': item.find('.comment-con').text()}

将结果打印,验证是否成功:

f8259db450d8c462fbfb117cf24f68c8.png

评论爬取成功!

补充

本文侧重于selenium的使用,并未对数据在数据库上进行存储,解析数据时也可以使用其它库,关于这方面的内容可以查看这一篇文章:

贝特西:通过爬虫爬取2000名明星照片进行颜值评测,你心中的男/女神有多少评分?​zhuanlan.zhihu.com
zhihu-card-default.svg
http://www.lbrq.cn/news/1111087.html

相关文章:

  • 网站建设后台有哪些东西/百度推广代理商加盟
  • 网站做app的软件叫什么/要怎么网络做推广
  • 网站锚文本怎么做/系统优化的方法
  • 学校网站手机站的建设方案/苏州seo关键词优化排名
  • 杭州网站做的好公司名称/seo技术软件
  • 绍兴网站快速排名优化/免费制作网页的网站
  • 南京怎样做网站/湖南发展最新消息公告
  • 做花馍网站/高级seo课程
  • 郑州住房和城乡建设厅网站/百度网址收录入口
  • 做企业规划的网站/百度推广怎么优化
  • 做网站涉及到哪些/seo关键词推广案例
  • 免费网站网络推广/深圳谷歌优化seo
  • 中国建设银行网站用户/查询关键词排名工具
  • 跨境电商工具类产品的网站/江苏企业网站建设
  • 阿里云云服务器ecs做网站访问慢/网络营销策略案例
  • 网站基本建设是什么/怎么创建一个自己的网站
  • 龙岗做商城网站建设/网站优化助手
  • 先进的网站建设/最近最新新闻
  • 韩国在中国做美食的视频网站/河北seo关键词排名优化
  • 品牌网站建设优化公司哪家好/网络营销管理
  • 网站备案多久做一次/北京seo外包 靠谱
  • 企业建设网站公司/seo一键优化
  • wordpress建手机站教程/阿里巴巴seo排名优化
  • 做网站要注意什么/成都谷歌seo
  • 装饰工程/厦门谷歌seo公司有哪些
  • 漳州最具口碑的网站建设/怎么提高百度搜索排名
  • 牛仔裤网站设计/百度开户流程
  • 优秀网站管理员/国家卫健委:不再发布每日疫情信息
  • 泉州做网站多少钱/微信广告
  • 爱站网站长seo综合查询/班级优化大师下载安装最新版
  • uniapp 动态控制横屏(APP 端)
  • UDP 协议下一发一收通信程序的实现与解析
  • 几款开源的安全监控与防御工具分享
  • react/vue vite ts项目中,自动引入路由文件、 import.meta.glob动态引入路由 无需手动引入
  • 网络爬虫的介绍
  • Redis7 底层数据结构解析