python爬虫导入数据库_用python进行网页爬取,数据插入数据库

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

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

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

1200650-20190810145847563-1394967967.png

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

代码很简单:

#!/usr/bin/env python#coding=utf-8

importrequestsfrom bs4 importBeautifulSoup

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=diseaseprint(disease)#疾病简介

div_list = soup.find_all('p', class_='introduction')for each indiv_list:

introduce=each.text.strip()

disease_introduce=introduceprint(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)

然后看下打印的结果:

1200650-20190810150337840-629051540.png

代码从头开始讲解一下:

用到的就是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=diseaseprint(disease)

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

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

div_list = soup.find_all('p', class_='introduction')for each indiv_list:

introduce=each.text.strip()

disease_introduce=introduceprint(disease_introduce)

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

1200650-20190810151711982-1123117271.png

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里面的信息进行获取,这些信息都是存在审判标签中

1200650-20190810151908683-902087312.png

然后我们根据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进行数据的提交,就可以了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值