首页 > 编程语言 >python模拟用户pa取

python模拟用户pa取

时间:2023-08-19 17:06:38浏览次数:36  
标签:NAME python text item pa CSS 选择器 模拟 desc

使用Selenium模拟用户爬取页面内容,并输出成文件。关于Selenium是什么,欢迎看这篇文章:selenium Python教程。在这里,我只讲我主要的实现。

首先作为一款工具脚本,我们应该不喜欢窗口界面吧,除非你需要动态的观察程序的操作。所以,我开启了无头浏览器模式

# 无头浏览器

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(options=chrome_options)

关键的driver拿到之后,剩下的过程就简单了。和一般的requests、spider爬虫一样,需要获得页面的代码,然后解析对应的元素,拿到属性或者文本。

# titles
title_elems = driver.find_elements(by=By.CLASS_NAME, value="item-title")
titles = [title_elem.text for title_elem in title_elems]

是不是很神奇,看到了By.CLASS_NAME,是不是一下子联想到了CSS了。是的,你的预感足够的正确。如果以上的内容带给你足够的震撼和惊奇,请继续往下看,


# 所有的更新时间
related_elems = driver.find_elements(by=By.CSS_SELECTOR, value="div.item-related > span.time")
relateds = [related_elem.text for related_elem in related_elems]
# 所有的描述信息
desc_elems = driver.find_elements(by=By.CSS_SELECTOR, value="div.item-desc > span")
# 需要去除新闻摘要结尾的()内容
descs = [desc_item.text[:desc_item.text.rfind('(')] for desc_item in desc_elems]

没错,"div.item-related > span.time"这个是什么选择起来着?后代选择器。nice,CSS的选择器它都支持。

来个小插曲:你知道的CSS选择器有哪些?

元素选择器 p div

类选择器 .highlight

ID选择器 #id

属性选择器 [type='text']

后代选择器 ul li

子元素选择器 ul > li

相邻兄弟选择器 h2+p

通用选择器 *

不要觉得我是多余的了,其实这些选择器会了,基本上在页面的爬取上就是无敌了。另外,selenium还有这几种选择器:


class By:
    """Set of supported locator strategies."""

    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"

常用的还是XPATH TAD_NAME CLASS_NAME CSS_SELECTOR 大家感兴趣的话可以自行的研究。


标签:NAME,python,text,item,pa,CSS,选择器,模拟,desc
From: https://blog.51cto.com/u_16039066/7150503

相关文章

  • python ORM框架
    导入需要的模块和函数这里的faker是为了后期的模拟数据使用,这里先透露一下。剩下的导入都和sqlalchemy的函数或包有关,如字段的类型、session的管理器、sql建表语句的生成等。fromsqlalchemyimportcreate_engine,Column,Integer,String,DateTimefromsqlalchemy.ext.declara......
  • python生成模拟数据
    python faker的使用Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据的生成安装pipinstallFaker使用fromfakerimportFakerfaker=Faker(locale='zh_CN')fromfakerimportF......
  • Python足球小游戏代码
    基于Python pygame的足球游戏源代码,游戏可以双人玩,游戏入口程序为soccer.py。控制人物一方向键:wasd,射门键:r控制人物二,方向键:键盘方向键,射门键:k程序运行截图核心程序代码:soccer.py#-*-coding:utf-8-*-from__future__importunicode_literalsimportitertools,sys,ti......
  • python实现发送udp数据包数据
    需求:python发送udp数据包数据,支持host、port、valueFile等启动参数,其中valueFile是json格式的文件,要解析编码完成转换。分模块实现:发送端:导入所需的模块和类,例如sys、logging、argparse、json、socket以及datetime和timedelta。定义一个Sender类,变量MULTI_TABLE_HEADER和SINGL......
  • gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;含义
    gpio=<&gpio0RK_PA6GPIO_ACTIVE_HIGH>;第一个参数是GPIO编号 第二个参数是GPIO引脚一般GPIO有32个引脚 定义在kernel-4.19\include\dt-bindings\pinctrl\rockchip.h#defineRK_GPIO00#defineRK_GPIO11#defineRK_GPIO22#defineRK_GPIO33#defin......
  • Python - 引用 内存地址 地址传递 值传递
    内存地址是数据在物理内存中的存储位置;Java常量池驻留,int是-5~256  __new__方法用于定义创建对象时执行的操作,__new__方法仅仅为用户提供一个创建对象时干预的入口,真正执行创建对象的操作由object类中的__new__方法完成。del操作的实质是断开变量与内存数据之间的引用,操......
  • Python练习:输入一个整数,输出该数二进制表示中1的个数。
      Python3整数对象存储为无符号数加上符号位标志,所以不存在“负数”补码形式,因此,计算“1”的数量需要按去符号后的无符号数:cnt=bin(n).count('1')另外,Python3无长整,整数长度原则上不限,所以不能以假定的32位处理。    补码+原码=2**321#-*-coding:ut......
  • 8.19 模拟赛小结
    前言结束了也许这几天很苦但也是最有意义的几天这篇写简单一点吧T1颠倒黑白很强的构造题根据打表找出思路因为最左下角的是一定要点的就考虑它如果是先手左下角有黑色就把它点了后手只能帮我们把其它黑色点了最后还是我们先点完若是后手左下角是白色与先手同......
  • 【考后总结】8 月 CSP-S 模拟赛 7
    8.19CSP模拟25给我一首歌的时间-周杰伦雨淋湿了天空毁得很讲究你说你不懂为何在这时牵手我晒干了沉默悔得很冲动就算这是做错也只是怕错过在一起叫梦分开了叫痛是不是说没有做完的梦最痛迷路的后果我能承受这最后的出口在爱过了才有能不能给我一首歌的时......
  • [代码随想录]Day22-回溯算法part02
    题目:216.组合总和III思路:多加一个记录和的参数,还有一个起始位置的参数(不重复就得加)结束条件是个数到了k:如果此时sum==n那就说明答案正确如果此时sum!=n那就直接返回剪枝的话:如果之后的和大于n那就没必要继续遍历了代码:varres[][]int//答案varpath[]int......