python 通过find_element xpath获取指定标签里的数据,怎么将标签下的字标签连同文字一起获取到呢?
比如一个 div标签,下面有 很多 p标签,现在获取的是纯文本,我想讲p标签也获取到,这样直接保存为html,直接打开就是一个格式化好的页面
在众多的网站盖楼活动中,官方网站一般都会检测是否有内容重复,一般同一个账号多次评论重复的内容,肯定会被禁止评论一段时间。
所以,我们需要将评论的内容多样化,比如说这个网站要我们称赞手机性能进行盖楼抽奖,那么我们就需要备用一些评论文字,方便程序随机获取。
具体文字放置在txt文件中,我们通过下面的代码进行读取:
# 获取需要评论的文本内容
txt_contents = []
f = open("回帖文案.txt", "r", encoding='utf-8')
line = f.readline() # 读取第一行
while line:
if line.strip() != "":
txt_contents.append(line.strip()) # 列表增加
line = f.readline() # 读取下一行
print(txt_contents)
count = len(txt_contents)
假如,我们是需要参加游戏论坛的盖楼评论活动,那么就可以用下面的文本进行随机提取评论,样本越多,重复性越少。
使用Python中selenium库结合xpath语法可以较为方便地实现该功能,可以按照以下步骤操作:
安装selenium库和Chrome浏览器对应版本的ChromeDriver驱动程序。
导入selenium库,启动Chrome浏览器并访问目标网页。
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动Chrome浏览器
browser = webdriver.Chrome()
# 访问目标网页
url = 'http://www.example.com'
browser.get(url)
# 使用xpath语法定位目标标签
target_tag = browser.find_element(By.XPATH, 'xpath expression')
# 获取目标标签的子标签和文本内容
children = target_tag.find_elements(By.XPATH, './child::*')
text = target_tag.text
# 处理子标签和文本内容为html格式字符串
html_str = '<div>'
for child in children:
html_str += etree.tostring(child, encoding='unicode')
if text:
html_str += text
html_str += '</div>'
# 保存为html文件
with open('example.html', 'w', encoding='utf-8') as f:
f.write(html_str)
完整代码示例:
from lxml import etree
from selenium import webdriver
from selenium.webdriver.common.by import By
# 启动Chrome浏览器
browser = webdriver.Chrome()
# 访问目标网页
url = 'http://www.example.com'
browser.get(url)
# 使用xpath语法定位目标标签
target_tag = browser.find_element(By.XPATH, 'xpath expression')
# 获取目标标签的子标签和文本内容
children = target_tag.find_elements(By.XPATH, './child::*')
text = target_tag.text
# 处理子标签和文本内容为html格式字符串
html_str = '<div>'
for child in children:
html_str += etree.tostring(child, encoding='unicode')
if text:
html_str += text
html_str += '</div>'
# 保存为html文件
with open('example.html', 'w', encoding='utf-8') as f:
f.write(html_str)
# 关闭浏览器
browser.quit()
element.get_attribute('outerHTML')