• 用python进行网页爬取,数据插入数据库


      

    可查看 https://mp.weixin.qq.com/s/XjHCHD9_kps6Ak6ftG94Aw 查看案例

    用python进行网页信息的爬取还是很简单的,而且现在进行爬取的

      在爬取之前,确定好自己的网页,然后用F12(查看网页源代码,然后确定网页的),这里就以一个简单的,页面布局简单的页面进行讲解:http://jbk.39.net/yyz/jbzs/

      先来看下页面的布局,以及我们想要进行页面的信息:

    就这个页面,我们想要从这里面将页面中的疾病的名称,还有就是疾病的介绍,以及疾病的基本信息(是否属于医保、别名、发病部位、传染性、、、)

    代码很简单:

    #!/usr/bin/env python
    # coding=utf-8
    import requests
    from bs4 import BeautifulSoup
    hdrs = {'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)'}
    url = "http://jbk.39.net/yyz/jbzs/"
    r = requests.get(url, headers = hdrs)
    soup = BeautifulSoup(r.content.decode('utf8', 'ignore'), 'lxml')
    #疾病名称
    for tag in soup.find_all('div', class_='disease'):
        disease = tag.find('h1').get_text()
        disease_name = disease
    print(disease)
    #疾病简介
    div_list = soup.find_all('p', class_='introduction')
    for each in div_list:
        introduce = each.text.strip()
        disease_introduce = introduce
    print(disease_introduce)
    for tag in soup.find_all('div', class_='list_left'):
        uls = tag.find('ul',class_="disease_basic")
        m_span = uls.findAll('span')
        # print(m_span)
        is_yibao = m_span[1].contents[0]#是否医保
        other_name = m_span[3].contents[0]#别名
        fbbw = m_span[5].contents[0]#发病部位
        is_infect = m_span[7].contents[0]#是否传染
        dfrq = m_span[9].contents[0]#多发人群
        m_a = uls.findAll('a')
        fbbw = m_a[0].contents[0]#发病部位
    print(is_yibao)
    print(other_name)
    print(is_infect)
    print(fbbw)

    然后看下打印的结果:

    代码从头开始讲解一下:

    用到的就是BeautifulSoup的框架进行信息的爬取,

    hdrs = {'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)'}

    这句代码就是设置代理,然后再将url、soup的信息进行传入(设置要爬取的网址,还有就是编码方式以及页面的设置)

    根据f12查看页面的标签之后,就可以通过标签选择的方式将标签里面的信息进行获取

    for tag in soup.find_all('div', class_='disease'):
        disease = tag.find('h1').get_text()
        disease_name = disease
    print(disease)

     这里面就是查看页面的标签之后,通过标签的类型以及class进行设定

    例如上面的疾病的名称的获取就是将页面里面class=‘disease’的里面的h1标签里面的信息进行获取

    div_list = soup.find_all('p', class_='introduction')
    for each in div_list:
        introduce = each.text.strip()
        disease_introduce = introduce
    print(disease_introduce)

    这里疾病的简介的获取方式和上面的是类似的,就只是就是查找class=‘introduction’的p标签里面的信息进行获取

    for tag in soup.find_all('div', class_='list_left'):
        uls = tag.find('ul',class_="disease_basic")
        m_span = uls.findAll('span')
        # print(m_span)
        is_yibao = m_span[1].contents[0]#是否医保
        other_name = m_span[3].contents[0]#别名
        fbbw = m_span[5].contents[0]#发病部位
        is_infect = m_span[7].contents[0]#是否传染
        dfrq = m_span[9].contents[0]#多发人群
        m_a = uls.findAll('a')
        fbbw = m_a[0].contents[0]#发病部位

    这些就是将class=‘list_left’的div里面的信息进行获取,这些信息都是存在审判标签中

    然后我们根据span的下标进行获取就可以了

    如果想讲这些信息添加到数据库,其实也很简单,下面说一下将信息添加到数据库的方法(这里是mysql数据库,数据库的连接上都是大同小异)

    首先想要连接数据库,就要先引入数据库的链接包:

    import pymysql
    print('连接到mysql服务器...')
    db = pymysql.connect(
            host="localhost",
            user="用户名",
            passwd="密码",
            port=端口(基本上是3306),
            db="数据库名称",
            charset='utf8',
            cursorclass=pymysql.cursors.DictCursor)
    print('连接上了!')
    cursor = db.cursor()

    这个就是将数据库的链接信息进行设置,然后连接成功,在控制台显示"连接上了"

    insert_color = ("INSERT INTO for_health(id,problem,introduce,solution,problem_id,drug,paqu_address,is_infect,symptom,cure_rate)" "VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)")
    dese = (id,problem,introduce,solution,problem_id,drug,paqu_address,is_infect,symptom,cure_rate)
    cursor.execute(insert_color, dese)
    db.commit()

    这些就是将数据传入数据库的操作了

    当然变量名是自己进行设定的,这里面的insert_color就是sql

    dese就是一个变量的集合

    然后将这两个参数进行传递到cursor.execute,然后commit进行数据的提交,就可以了

  • 相关阅读:
    攻防世界pwn高手区——pwn1
    攻防世界misc——János-the-Ripper
    攻防世界逆向——game
    PWN——ret2dl_resolve
    谈一些想法
    python网络编程(一)
    pwnable.kr之unlink
    堆的数据结构探究
    记一次GKCTF之旅
    socket笔记
  • 原文地址:https://www.cnblogs.com/zhaochunhui/p/11331749.html
Copyright © 2020-2023  润新知