html制作企业宣传网站,jf厂高仿手表网站,郑州网络seo公司,重庆网站模板建站爬取动态网页#xff08;上#xff09; 文章目录 爬取动态网页#xff08;上#xff09;前言一、大致内容二、基本思路三、代码编写1.引入库2.加载网页数据3.获取指定数据 总结 前言
之前的两篇写的是爬取静态网页的内容#xff0c;比较简单。接下来呢给大家讲一下如何去…爬取动态网页上 文章目录 爬取动态网页上前言一、大致内容二、基本思路三、代码编写1.引入库2.加载网页数据3.获取指定数据 总结 前言
之前的两篇写的是爬取静态网页的内容比较简单。接下来呢给大家讲一下如何去爬取动态网页的数据。同样上两篇用的Python库在这里也是用不了滴。 一、大致内容
以此网址为例豆瓣2022年度电影榜单 通过使用selenium相关技术来爬取相应的片名、人物、产地、评分等信息。
二、基本思路
第一步打开网页右键在指定的数据类型上点击检查。第二步网页就会弹出一个窗口并定位到相应的网页代码的位置上。 第三步根据数据前面的div、class等标签参数来进行代码的编写获取一系列的同类数据。第四步对获取的数据进行整理保存成我们便于查看的格式比如excel文档。时间来不及了。。这个会在《爬取动态网页下》上写 三、代码编写
1.引入库 代码如下 from selenium import webdriver
from selenium.webdriver.common.by import By
import time2.加载网页数据 代码如下 driver webdriver.Firefox()driver.get(https://movie.douban.com/annual/2022/?fullscreen1sourcemovie_navigation)time.sleep(5)driver.execute_script(window.scrollTo(0, document.body.scrollHeight);)driver webdriver.Firefox(): 这一行创建了一个新的 Firefox WebDriver 实例。WebDriver 是一个接口允许你通过编程方式控制浏览器的行为。driver.get(): 这一行使用 WebDriver 让 Firefox 浏览器打开指定的 URL在这个例子中是豆瓣电影 2022 年度榜单页面。time.sleep(): 这一行会让 Python程序暂停执行5秒。这个暂停是为了给网页加载时间确保所有内容都已完全加载到浏览器中。在实际操作中可能需要根据网页的实际加载速度来调整这个等待时间。driver.execute_script(): 这段代码的作用是滚动浏览器窗口到底部。window.scrollTo(x, y) 是一个 JavaScript方法它接受两个参数x 表示水平滚动位置y 表示垂直滚动位置。在这里0表示保持水平滚动位置不变document.body.scrollHeight表示将垂直滚动位置设置为文档的总高度从而实现滚动到底部的效果。
这段代码的主要目的是打开豆瓣电影年度榜单页面并滚动到页面底部为了确保所有内容都已经加载完成。 3.获取指定数据 代码如下 # 获取四大影视类型标题
comment_Titles driver.find_elements(byBy.CSS_SELECTOR, value.module-top10-grid-chart-title)
for comment in comment_Titles:print(comment.text)# 获取每个影视类型里的第一名片名
which_mo_list driver.find_elements(byBy.CSS_SELECTOR, value.subject-top-title)
for each_mo in which_mo_list:movie_title each_mo.get_attribute(title)print(movie_title)# 获取每个影视类型里的第一名评分
movies_top_scores_list driver.find_elements(byBy.CSS_SELECTOR, value.rating-card-value)
for movie_top_score in movies_top_scores_list:score movie_top_score.textprint(score)# 获取所有影片的人物信息
persons_list driver.find_elements(byBy.CSS_SELECTOR, value.subject-credit)
for person in persons_list:person_title person.find_elements(byBy.TAG_NAME, valuep)for title in person_title:print(title.text)# 获取影片的产地每个影视类型里的第一名除外
addresses_list driver.find_elements(byBy.CSS_SELECTOR, value.subjects-rank-credits div:nth-child(2))
for addresses in addresses_list:address_text addresses.textprint(address_text)# 获取影片评分每个影视类型里的第一名除外
movies_scores_list driver.find_elements(byBy.CSS_SELECTOR, value.subjects-rank-rating)
for movie_score in movies_scores_list:score movie_score.textprint(score)乍一看有很多代码。仔细看其实都是一样的格式先是find它们在哪里然后把它们保存成一个列表最后使用for结构遍历打印出来。
以其中一个举例# 获取四大影视类型标题解释一下
comment_Titles driver.find_elements(byBy.CSS_SELECTOR,value‘.module-top10-grid-chart-title’): 这一行使用 WebDriver 的find_elements 方法查找页面上所有匹配给定 CSS 选择器的元素。在这个例子中CSS 选择器是.module-top10-grid-chart-title它会匹配所有具有module-top10-grid-chart-title 类名的 HTML 元素。find_elements方法会返回一个包含所有匹配元素的列表。for comment in comment_Titles:: 这一行开始一个 for 循环遍历 comment_Titles列表中的每个元素。在每次循环中当前元素会被赋值给变量 comment。print(comment.text): 这一行在循环内部执行它使用 text 属性获取当前 comment元素中的文本内容并将其打印到控制台。text 属性返回元素及其所有子元素的纯文本内容不包括 HTML 标签。
总的来说这两行代码的作用是从页面上找到所有具有 module-top10-grid-chart-title 类名的元素并打印出它们的文本内容。这些元素是豆瓣电影年度榜单中的四大影视类型的标题。
给大家看一下效果图吧。 总结 到这里已经完成一大半了。剩下的就是对数据的处理如何让它们看起来比较舒服。由于时间问题剩下的下回见各位。)