网站的设计方法有哪些内容,七台河新闻联播视频,企业管理类的网站,买了阿里云怎么做网站网页滚动功能实现
网页的滚动 如果需要对网页进行滑动操作#xff0c;可以借助浏览器对象调用execute_script()方法来执行js语句#xff0c;从而实现网页中的滚动下滑操作。
使用js语法实现网页滚动#xff1a;
# 根据x轴和y轴的值来定向滚动对应数值的距离
window.scrol…网页滚动功能实现
网页的滚动 如果需要对网页进行滑动操作可以借助浏览器对象调用execute_script()方法来执行js语句从而实现网页中的滚动下滑操作。
使用js语法实现网页滚动
# 根据x轴和y轴的值来定向滚动对应数值的距离
window.scrollTo(横向x轴的值,竖向y轴的值)# 当前页面x轴的值为0y轴移动到底部
window.scrollTo(0,document.body.scrollHeight)# 页面滚动到固定的位置
document.documentElement.scrollTop数值使用案例
import time
from selenium import webdriver
from selenium.webdriver.common.by import Bydriver webdriver.Chrome()
driver.get(https://www.baidu.com)# 通过ID定位搜索框元素
input_element driver.find_element(By.ID, kw)# 在搜索框中输入搜索内容
input_element.send_keys(美女)# 定位百度一下的按钮元素
button_element driver.find_element(By.ID, su)# 对百度一下的按钮元素进行点击
button_element.click()# 滑动网页前需要等待一段时间否则不会生效
time.sleep(2)# 利用js来滚动对应数值的距离
driver.execute_script(window.scrollTo(0,1000))# 拖动滚动条至底部
driver.execute_script(window.scrollTo(0,document.body.scrollHeight))# 拖动滚动条到指定位置
driver.execute_script(document.documentElement.scrollTop6000)# 等待搜索结果加载完毕
time.sleep(3)当当网图书页分析
采集当当图书网中的书籍的相关信息其中主要筛选书名和价格。 网页链接 http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-1
网页分析 如果想要抓取网站中的数据信息需要先分析目标数据在网页中的展示方式。因为不同的网站的数据展 示方式不同且相同网站的不同网页数据的展示方式也不尽相同所以需要先确定具体情况。
网页中的数据要么是直接存放在 HTML 代码中这种通过 XPath、正则表达式等方式可以筛选获取数 据。要么就是通过 Js 发送请求来展示数据的这种就需要查找调用的 Js 接口使用 JsonPath 筛选数 据。
判断方式可以通过Network网络中的Preview预览来查看是否有目标数据如果有则代表数 据存放在 HTML 代码中否则数据一般是在 Js 接口中。
滑动加载 在网页中加载大量数据时网站为了提高网页的相应速度一般都会对数据进行分段加载打开的网页只 会展示一部分数据信息如果用户继续向下滑动页面才会加载剩余的数据信息从而提高用户的体 验。如果进入网页后直接使用 XPath 提取数据无法获取一页中的全部数据内容就可以在 Selenium 中 模仿页面的滚动下滑操作以保证抓取到当前网页中的全部图书信息。
当当图书单页抓取
import json
import time # 延迟模块
from lxml import etree # 解析html
from selenium import webdriver # 导入selenium# 1、创建浏览器对象并打开对应网页
driver webdriver.Chrome()
driver.get(http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-1)# 2、设置浏览器窗口最大化并延时等待数据加载完毕
driver.maximize_window()
time.sleep(2)# 3、设置滚动次数来模拟人的动作
for i in range(1, 4):# 滚动一次停留1秒time.sleep(1)# 每次循环滚动1000的距离driver.execute_script(fdocument.documentElement.scrollTop{i * 1000})# 4、获取当前页面的html代码
str_data driver.page_source# 5、解析网页筛选所有图书的元素节点
html etree.HTML(str_data)
data_list html.xpath(//ul[classbang_list clearfix bang_list_mode]/li)# 6、遍历每本图书的标签信息
for data in data_list:# 从图书的标签中获取图书名字book_name data.xpath(./div[classname]/a/text())[0]# 从图书的标签中获取图书价格book_price data.xpath(./div[classprice]/p/span[classprice_n]/text())[0]print(f书名:{book_name} 价格:{book_price})# 7、将书籍信息打包成一个字典数据book_dict {name: book_name, price: book_price}# 8、创建json文件来保存抓取到的图书数据with open(当当图书.json, a, encodingutf-8) as file:# 将字典数据转换为json字符串且中文不进行转码json_data json.dumps(book_dict, ensure_asciiFalse) ,\n# 将json数据写入到文件中file.write(json_data)time.sleep(3)当当图书分页抓取
抓取一页数据后开始进行翻页从而获取下一页的数据信息
import json
import time # 延迟模块
from lxml import etree # 解析html
from selenium import webdriver # 导入selenium
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options# 1、输入抓取书籍的页数
pages int(input(请输入抓取的图书页数))# 2、创建浏览器对象设置无界面模式并打开对应的网页
options Options()
options.add_argument(--headless)
driver webdriver.Chrome(optionsoptions)
driver.get(http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-1)# 3、浏览器窗口最大化并延时等待网页加载完毕
driver.maximize_window()
time.sleep(2)# 4、循环遍历抓取的页数
for i in range(pages):# 5、设置滚动次数来模拟人的动作for n in range(1, 4):# 滚动一次停留1秒time.sleep(1)# 每次循环滚动1000的距离driver.execute_script(fdocument.documentElement.scrollTop{n * 1000})# 6、获取当前页面的html代码str_data driver.page_source# 7、解析网页筛选图片元素节点html etree.HTML(str_data)data_list html.xpath(//ul[classbang_list clearfixbang_list_mode]/li)# 8、遍历每本图片的标签信息for data in data_list:# 从图书的标签中获取图书名字book_name data.xpath(./div[classname]/a/text())[0]# 从图书的标签中获取图书价格book_price data.xpath(./div[classprice]/p/span[classprice_n]/text())[0]print(f书名:{book_name} 价格:{book_price})# 9、将书籍信息打包成一个字典数据book_dict {name: book_name, price: book_price}# 10、创建json文件来保存抓取到的图书数据with open(当当图书.json, a, encodingutf-8) as file:# 将字典数据转换为json字符串且中文不进行转码json_data json.dumps(book_dict, ensure_asciiFalse) ,\n# 将json数据写入到文件中file.write(json_data)# 11、定位翻页标签并点击该标签来实现翻页功能element driver.find_element(By.XPATH,//li[classnext]/a)element.click()# 12、翻页后等待3秒time.sleep(3)