python利用selenium获取网页head中的title

这篇具有很好参考价值的文章主要介绍了python利用selenium获取网页head中的title。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

工作中有批量获取网页head中title的应用场景,实践中遇到了一些问题,以此记录一下。

  1. 通过检查发现网页的head中的title确实有文本,但是使用selenium的driver.title提取到了空字符串’’

  2. 接着使用driver.find_element(By.XPATH, ‘/html/head/title’).is_displayed(),得到False,说明title被隐藏了

  3. 进一步检查一下head,使用

    js = "document.head"
    print(driver.execute_script(js))# 得到None
    
    js = "document.title"
    print(driver.execute_script(js))# 同样是None
    

    说明head整个给隐藏了?

  4. 开始百度谷歌,尝试使用了css选择器,XPATH定位等,尝试了bs4解析网页,添加js 语句去使head displayed设置维True等等,都失败了,得到同样结果。

解决方法

最终找到了一个方法解决了问题。
代码如下,利用XPATH先定位元素,然后get_attribute(“textContent”)可以获得到隐藏的元素,前面的定位器应该也可以改成自己所需要的其他定位。文章来源地址https://www.toymoban.com/news/detail-535950.html

driver.find_element(By.XPATH, '/html/head/title').get_attribute("textContent")

完整代码如下

# 返回网站名称列表,数据来源列表
def get_site_name(urls,site_names):
    options = webdriver.ChromeOptions()
    options.page_load_strategy = 'none' # 我只要部分html元素,所以选择不渲染全部html内容
    driver = webdriver.Chrome('C:\\Program Files\\Google\\Chrome\\Application\\chromedriver.exe', options=options) # 自己的路径
    driver.maximize_window() # 最大化窗口 
    
    # wait = WebDriverWait(driver, 5)
    names = []
    state = []
    for i in tqdm(range(len(urls))):
        url = urls[i]
        try:
            driver.get(url)
            # wait.until(driver.find_element(By.XPATH, '/html/head/title'))
            time.sleep(1) # 一定要sleep 1s,不然会找不到元素,也就是要等待网页打开才行
            title = driver.find_element(By.XPATH, '/html/head/title').get_attribute("textContent")
            names.append(title)
            state.append(1) # 代表获取成功
        except:
            names.append(site_names[i])
            state.append(0) # 代表获取失败
        
    return pd.DataFrame({'url':urls,'site_name':site_names,'title':names,'state':state})

到了这里,关于python利用selenium获取网页head中的title的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://blog.csdn.net/Autismmei/article/details/125554834

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包