zoukankan      html  css  js  c++  java
  • Request爬取网站(seo.chinaz.com)百度权重的查询结果

    一:脚本需求

    利用Python3查询网站权重并自动存储在本地数据库(Mysql数据库)中,同时导出一份网站权重查询结果的EXCEL表格

    数据库类型:MySql

    数据库表单名称:website_weight

    表单内容及表头设置:表头包含有id、main_url(即要查询的网站)、website_weight(网站权重)

    要查询的网站:EXCEL表格

    二:需求实现

    一:利用openpyxl模块解析excel文件,将查询的网站读取到一个列表中保存

    # 解析excel文件,取出所有的url
    def get_urls(file_path):
        wb = load_workbook(file_path)
        sheet = wb.active
        urls = []
        for cell in list(sheet.columns)[1]:
            if cell != sheet['B1']:
                urls.append(cell.value)
        return wb, urls

    二:分析请求发送,伪造请求,取得HTML页面

    # 伪造请求,取得html页面
    def get_html(url):
        # 定义http的请求Header
        headers = {}  
        # random.randint(1,99) 为了生成1到99之间的随机数,让UserAgent变的不同。
        headers[
            'User-Agent'] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537." + str(
            random.randint(1, 99))
        # Referer地址使用待查询的网址
        headers['Referer'] = "http://seo.chinaz.com/" + url + "/"
        html = ''
        try:
            html = requests.get("http://seo.chinaz.com/" + url + "/", headers=headers, timeout=5).text
        except Exception:
            pass
        return html

    三:分析HTML页面,利用BeautifulSoup模块提取数据

    # 利用BeautifulSoup模块从html页面中提取数据
    def get_data(html, url):
        if not html:
            return url, 0
        soup = bs(html, "lxml")
        p_tag = soup.select("p.ReLImgCenter")[0]
        src = p_tag.img.attrs["src"]
        regexp = re.compile(r'^http:.*?(d).gif')
        br = regexp.findall(src)[0]
        return url, br

    四:数据库连接配置,并获取游标

    # 连接数据库
    def get_connect():
        conn = pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            passwd='root',
            db='seotest',
            charset="utf8")
        # 获取游标对象
        cursor = conn.cursor()
        return conn, cursor

    五:主程序逻辑编写

    if __name__ == "__main__":
        #命令行执行脚本文件,获取excel文件路径
        file_path = sys.argv[1]
        #获取URL列表和excle工作簿
        wb, urls = get_urls(file_path)
        #获取数据库连接和游标
        conn, cursor = get_connect()
        #获取工作簿当前工作sheet
        sheet = wb.active
        #数据库插入语句
        sql_insert = '''insert into website_weight(main_url, website_weight) values (%s, %s)'''
        
        for row, url in enumerate(urls):
            if not url: continue
            html = get_html(url)
            data = get_data(html, url)
            # 插入数据到数据库
            cursor.execute(sql_insert, data)
            # 插入数据到Excel表中
            cell = sheet.cell(row=row + 2, column=3)
            cell.value = data[1]
            # 终端打印插入的数据
            print(data)
        conn.commit()
        conn.close()
        wb.save(file_path)
        wb.close()
    
    # cmd命令:python3 F:算法与结构网站权重.py F:website.xlsx

    三:脚本运行及其实现结果

    CMD执行

    数据库:

    excel文件写入:

  • 相关阅读:
    虚函数和纯虚函数
    MS CRM 2011中PartyList类型字段的实例化
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(4)
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(2)
    MS CRM 2011的自定义和开发(10)——CRM web服务介绍(第二部分)——IOrganizationService(二)
    MS CRM 2011 SDK 5.08已经发布
    MS CRM 2011 Q2的一些更新
    最近很忙
    Microsoft Dynamics CRM 2011最近的一些更新
    补一篇,Update Rollup 12 终于发布了
  • 原文地址:https://www.cnblogs.com/li1992/p/9863056.html
Copyright © 2011-2022 走看看