python模拟点击下一页_爬虫模拟点击下一页selenium
爬虫实现翻页功能
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import json
import csv
import random
# 声明一个谷歌驱动器,并设置不加载图片,间接加快访问速度
options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', {'profile.managed_default_content_settings.images': 2})
browser = webdriver.Chrome(options=options)
# url
url = 'https://www.jd.com/'
# 声明一个list,存储dict
data_list = []
def start_spider():
# 请求url
browser.get(url)
# 获取输入框的id,并输入关键字python爬虫
browser.find_element_by_id('key').send_keys('python爬虫')
# 输入回车进行搜索
browser.find_element_by_id('key').send_keys(Keys.ENTER)
# 显示等待下一页的元素加载完成
WebDriverWait(browser, 1000).until(
EC.presence_of_all_elements_located(
(By.CLASS_NAME, 'pn-next')
)
)
# 先获取一个有多少页
all_page = eval(browser.find_element_by_css_selector('span.p-skip em b').text)
print(all_page)
# 设置一个计数器
count = 0
# 无限循环
while True:
try:
count += 1
# 显示等待商品信息加载完成
WebDriverWait(browser, 1000).until(
EC.presence_of_all_elements_located(
(By.CLASS_NAME, 'gl-item')
)
)
# 将滚动条拉到最下面的位置,因为往下拉才能将这一页的商品信息全部加载出来
browser.execute_script('document.documentElement.scrollTop=10000')
# 随机延迟,等下元素全部刷新
time.sleep(random.randint(1, 3))
browser.execute_script('document.documentElement.scrollTop=0')
# 开始提取信息,找到ul标签下的全部li标签
lis = browser.find_elements_by_class_name('gl-item')
# 遍历
for li in lis:
# 名字
name = li.find_element_by_xpath('.//div[@class="p-name p-name-type-2"]//em').text
# 价格
price = li.find_element_by_xpath('.//div[@class="p-price"]//i').text
# 评论数
comment = li.find_elements_by_xpath('.//div[@class="p-commit"]//a')
if comment:
comment = comment[0].text
else:
comment = None
# 商铺名字
shop_name = li.find_elements_by_class_name('J_im_icon')
if shop_name:
shop_name = shop_name[0].text
else:
shop_name = None
# 商家类型
shop_type = li.find_elements_by_class_name('goods-icons')
if shop_type:
shop_type = shop_type[0].text
else:
shop_type = None
# 声明一个字典存储数据
data_dict = {}
data_dict['name'] = name
data_dict['price'] = price
data_dict['comment'] = comment
data_dict['shop_name'] = shop_name
data_dict['shop_type'] = shop_type
data_list.append(data_dict)
print(data_dict)
except Exception as e:
continue
# 如果count==all_page就退出循环
if count == all_page:
break
# 找到下一页的元素pn-next
fp_next = browser.find_element_by_xpath('//*[@id = "J_bottomPage"]/span[1]/a[9]/em')
#fp_next = browser.find_element_by_css_selector('a.fp-next')
# 点击下一页
fp_next.click()
def main():
start_spider()
# 将数据写入jsonwenj
# with open('data_json.json', 'a+', encoding='utf-8') as f:
# json.dump(data_list, f, ensure_ascii=False, indent=4)
# print('json文件写入完成')
#
# with open('data_csv.csv', 'w', encoding='utf-8', newline='') as f:
# # 表头
# title = data_list[0].keys()
# # 声明writer
# writer = csv.DictWriter(f, title)
# # 写入表头
# writer.writeheader()
# # 批量写入数据
# writer.writerows(data_list)
# print('csv文件写入完成')
if __name__ == '__main__':
main()
# 退出浏览器
browser.quit()
python模拟点击下一页_爬虫模拟点击下一页selenium相关推荐
- python如何暂停脚本弹出对话框_如何在点击时暂停pyautogui脚本?
我想让我的脚本Pyautogui暂停当用户点击并显示一个对话框或重新点击继续在最后一行暂停.在 我尝试了不同的测试,但没有成功.在 我主要用Queue测试当用户输入"Space"时 ...
- python爬虫模拟浏览器的两种方法_python爬虫模拟浏览器访问-User-Agent过程解析
这篇文章主要介绍了python爬虫模拟浏览器访问-User-Agent过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 模拟浏览器访问-Use ...
- svn忽略指定文件夹下的文件_管理SteamLibrary文件夹下的acf文件
管理SteamLibrary文件夹下的acf文件 众所周知,steam中下载的游戏会在SteamLibrarysteamappscommon文件夹下创建一个以游戏名称为名的文件夹用来存放文件,并在St ...
- python爬取js动态网页_Python 从零开始爬虫(八)——动态爬取解决方案 之 selenium
selenium--自动化测试工具,专门为Web应用程序编写的一个验收测试工具,测试其兼容性,功能什么的.然而让虫师们垂涎的并不是以上的种种,而是其通过驱动浏览器获得的解析JavaScript的能力. ...
- python 爬虫模拟点击_爬虫——模拟点击动态页面
动态页面的模拟点击: 以斗鱼直播为例:http://www.douyu.com/directory/all 爬取每页的房间名.直播类型.主播名称.在线人数等数据,然后模拟点击下一页,继续爬取 #!/u ...
- python 爬虫爬不出来_爬虫爬不进下一页了,怎么办
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #-*- coding: UTF-8 -*- import scrapy from hoho.items import HohoItem import r ...
- python编程课程是骗人的吧_在朋友圈买下编程课,你上的是Python还是成功学
原标题:在朋友圈买下编程课,你上的是Python还是成功学
- python selenium 点击加载更多_如何等待页面加载,然后按selenium中的“加载更多”按钮?...
你可能会在页面底部看到谷歌广告.在from selenium import webdriver from selenium.webdriver.common.by import By from sel ...
- python电影评论的情感分析流浪地球_爬虫实例 | Python爬取《流浪地球》豆瓣影评与数据分析(下)...
[芝麻IP代理]三.数据分析与可视化 1.获取cookies 城市信息筛选中文字 匹配pyecharts支持的城市列表 2.基于snownlp的情感分析 关于snownlp的作用,主要可以进行中文分词 ...
最新文章
- 整个世界都是你的绿幕:这个视频抠图换背景的方法着实真假难辨
- 胡渊鸣的「太极图形」又融了5000万美元,接下来推出3D内容创作平台
- Cloudify — REST Plugin
- MQ的引言|不同MQ的特点|RabbitMQ安装
- 《模式识别与机器学习》学习笔记:2.2 多项变量
- Mysql学习总结(10)——MySql触发器使用讲解
- C#操作Excel的OLEDB方式与COM方式比较
- 怎么运行c语言_C语言 原来是这样调用硬件的
- 连续两年入选Gartner公共云容器,阿里云在边缘容器方面做了什么?
- CSS基础必备知识点05
- 分享我用cnode社区api做微信小应用的入门过程
- 计算机组成原理(微课版)谭志虎pdf资源
- 计算机面试 OA 试题及答案,办公自动化题库OA(附答案)
- armeabi与armeabi-v7a的区别,绝对干货!
- Java实践练习判断变量x是奇数还是偶数
- 靶机渗透练习81-Momentum:2
- 计算机怎么转换英语版本,电脑英文字母大小写怎么转换
- 一种基于STM32F1 MCU的增量型编码器测速的方法
- Arction图表控件LightningChart振动分析可以检测什么?
- 学习opencv:PS滤镜—曝光过度
热门文章
- Js WebSocket简单抽象类实现
- Android AP侧和Modem侧日志时间差异大
- 为网络加速 LOTWARE广域网加速解决方案
- model.evaluate检验
- 腾讯云+社区沙龙·小程序敏捷开发实战(北京)开启报名
- EVPN小实验:集中式EVPN网关配置
- 【Linux实时编程之CPU核心隔离】Linux(ubuntu)下CPU隔离的踩坑与实践 (isolcpus的使用)
- 实验室可以训练(De)CLIP了!商汤ICLR2022 DeCLIP正式开源!
- awk 打印单引号和双引号
- 企业能否自建物联网卡管理平台