Python编程学习之利用selenium分辨出可访问的网页并获取网页内容

一、前言

笔者在前面的文章中收集到一些域名,在这些域名收集完后,并不是每一个域名都有作用,我们要过滤掉访问不了的网站,所以今天学习利用Python中的selenium模块启动Chromium来请求网站,下面记录一下自己的学习过程。

二、学习过程

1.开发工具:

Python版本:3.7.1

相关模块:

selenium模块

pymysql模块

2.原理简介

从数据库读取出需要访问的域名------利用selenium进行访问域名并获取网站标题、内容长度、截图------存入数据库

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import pymysql

# 获取存活的域名
def run(cursor):
    # 获取域名
    domains = get_domains(cursor)

    # Chrome的参数选项
    chrome_options = Options()
    # 无头操作
    chrome_options.add_argument(‘--headless‘)
    # 利用这个路径的Chromium来进行操作
    chrome_options.binary_location = r‘%s‘%"/Applications/Chromium.app/Contents/MacOS/Chromium"

    # 创建Chrome实例
    driver = webdriver.Chrome(executable_path=(r‘/Users/hello/Desktop/chromedriver/chromedriver‘), options=chrome_options)
    # 设置20秒的超时时间
    driver.set_page_load_timeout(20)
    success_list = []
    for i in domains:
        try:
            # 请求网站
            driver.get(‘https://‘+i[0])
            #获取网站的信息
            http_length = len(driver.page_source)
            http_status = ‘响应成功‘
            img_path = "/Users/hello/Desktop/py test/%s.png"%i[0]
            screenshot = driver.get_screenshot_as_file(img_path)
            if driver.title:
                title = driver.title
            else:
                title = ‘‘
            success_list.append([i[0], title, http_length, img_path, http_status])
        except :
            print(‘%s 响应失败‘%i[0])
    return success_list

# 去数据库查询域名
def get_domains(cursor):
    sql = "SELECT hostname FROM 数据库"
    cursor.execute(sql)
    domain_lists = cursor.fetchall()
    return domain_lists

# 把可访问的域名插入数据库
def insert(cursor, list, db):
    for i in list:
        select_sql = "SELECT id FROM 数据库 WHERE hostname = ‘%s‘"%i[0]
        cursor.execute(select_sql)
        result = cursor.fetchone()
        update_sql = "UPDATE 数据库 SET page_title = ‘%s‘, http_length = %d, page_jietu_path = ‘%s‘, http_status= ‘%s‘ WHERE id = %s" %(i[1], i[2], i[3], i[4], result[0])
        cursor.execute(update_sql)
        db.commit()

if __name__ == "__main__":
    db = pymysql.connect(‘localhost‘, ‘账户‘, ‘密码‘, ‘test‘)
    cursor = db.cursor()

    list = run(cursor)
    insert(cursor, list, db)
    db.close()

  

三、效果展示

四、总结

程序速度较慢,程序编写能力有待加强。

原文地址:https://www.cnblogs.com/liuzzzzzz/p/11979891.html

时间: 2024-10-08 08:51:25

Python编程学习之利用selenium分辨出可访问的网页并获取网页内容的相关文章

Python编程学习,高效求解素数程序实例

素数是编程中经常需要用到的. 作为学习Python的示例,下面是一个高效求解一个范围内的素数的程序,不需要使用除法或者求模运算. 1 #coding:utf-8 #设置python文件的编码为utf-8,这样就可以写入中文注释 2 def primeRange(n): 3 myArray=[1 for x in range(n+1)] ##列表解析,生成长度为(n+1)的列表,每个数值都为1 4 myArray[0]=0 5 myArray[1]=0 6 startPos=2 7 while s

【python爬虫】利用selenium和Chrome浏览器进行自动化网页搜索与浏览

功能简介:利用利用selenium和Chrome浏览器,让其自动打开百度页面,并设置为每页显示50条,接着在百度的搜索框中输入selenium,进行查询.然后再打开的页面中选中“Selenium - 开源中国社区”,并打开页面 知识简介: selenium的作用: 1).最初用于网站自动化测试,近几年,用于获取精确的网站快照. 2).可以直接运行在浏览器上,让浏览器自动加载页面,获取需要的数据,还可以页面截屏,或者判断网站上某些动作是否发生. 项目步骤: 1.利用google的Chrome浏览器

python编程学习进度一

以前自己写项目后台基本都是使用 Java语言来实现的,从来没有好好学习过Python语言,之前只做过相关的爬虫编程,并没有深入了解学习过.今天跳读了一本评价极好的书<Python编程从入门到实战>,以复习一下之前的 Python 基础.然后分析一下我学习的一些东西. Python解释器有两种,也就是说有两种方式执行Python代码——①交互式编程.②脚本式编程很多初始教程采用交互式编程这里借助 pycharm,采用脚本式编程. 1.数据类型 # 1.全体小写 print('Itaem'.low

python编程学习进度二

今天是学习python编程的第二天,今天仍然是看<Python编程从入门到实战>这本书,下面是主要学习的东西的总结 1.程序输入和raw_input()内建函数 从用户得到数据输入的最好方式使用raw_input()函数,它读取标准输入,并将读取到的数据赋值给指定的变量. 注释: 和大部分脚本及Unix-shell语言一样,python也使用 # 符号标示注释,从#开始直到一行结束的内容都是注释 操作符 和其他大多数语言一样,Python中的标准算数操作符以你熟悉的方式工作.加.减.乘.除.取

python编程学习进度四

今天自己写了 一个简单代码帮助自己理解python编程中的一些类的关系以及一些函数属性, 总结如下: 1,在python当中一切皆对象,每产生一个对象会对应三个属性:id.类型type和数值2,创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性:而类中有两种属性:数据属性和函数属性,其中类的数据属性是共享给所有对象的,而类的函数属性是绑定到所有对象的. 3,在类的内部来说,__init__是类的函数属性,但是对于对象来说,就是绑定方法.4,命名空间的问题:先从对

Python编程学习——拷贝

简介: 这一篇博客主要讨论Python对象的拷贝问题,区分浅拷贝和深拷.为了保持追踪内存中的对象,Python使用了引用计数这一简单技术,下面将进行简单介绍. 1.引用计数: 当对象被创建并赋值给变量时,该对象的引用计数就被设置为 1 .当同一个对象又被赋值给其他变量时,或作为参数传给函数.方法或类实例时,或被赋值为一个窗口对象的成员时,该对象的一个新的引用(或称为别名)就被创建,该对象的引用计数加 1 .使用del关键字可以减少引用计数. 我们可以看到下面代码: #!/usr/bin/env

学习Python编程的11个资源

转自 http://blog.jobbole.com/71064/  用于以后学习备份 用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程语言.如果你正打算学习 web 开发,Python 是一个不错的选择,甚至你想学游戏开发也可 以从 Python 开始,因为用 Python 来构建游戏的资源实在是太多了.这是一种快速 学习语言的一种方法. 许多程序员使用 Python 作为初学语言,然后接着是像 PHP 和 Ruby 这样的语言.它也是2014最热门的 web 开

学习Python编程的11个精品资源

本文由 伯乐在线 - atupal 翻译自 Alex Ivanovs.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. 用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程语言.如果你正打算学习 web 开发,Python 是一个不错的选择,甚至你想学游戏开发也可 以从 Python 开始,因为用 Python 来构建游戏的资源实在是太多了.这是一种快速 学习语言的一种方法. 许多程序员使用 Python 作为初学语言,然后接着是像 PHP 和 Ruby 这样的语言.

python基础学习12(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #python class #面向对象编程oop思想,3个特性:封装.继承.多态,在其他方面的功能,比如重载,模拟等,也可以自定义自己需要的类 #在python中,面向对象主要2个:类和类实例 #类与实例 #类与实例有关