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

  用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进行数据的提交,就可以了

原文地址:https://www.cnblogs.com/zhaochunhui/p/11331749.html

时间: 2024-10-06 20:08:55

用python进行网页爬取,数据插入数据库的相关文章

python 网页爬取数据生成文字云图

1. 需要的三个包: from wordcloud import WordCloud #词云库 import matplotlib.pyplot as plt #数学绘图库 import jieba; 2. 定义变量(将对于的变量到一个全局的文件中): import re; pdurl_first='https://movie.douban.com/subject/26363254/comments?start=0' head={'User-Agent':'Mozilla/5.0 (X11; L

python动态网页爬取——四六级成绩爬取

需求: 四六级成绩查询网站我所知道的有两个:学信网(http://www.chsi.com.cn/cet/)和99宿舍(http://cet.99sushe.com/),这两个网站采用的都是动态网页.我使用的是学信网,好了,网站截图如下: 网站的代码如下: 1 <form method="get" name="form1" id="form1" action="/cet/query"> 2 3 <table

python之scrapy爬取数据保存到mysql数据库

1.创建工程 scrapy startproject tencent 2.创建项目 scrapy genspider mahuateng 3.既然保存到数据库,自然要安装pymsql pip install pymysql 4.settings文件,配置信息,包括数据库等 # -*- coding: utf-8 -*- # Scrapy settings for tencent project # # For simplicity, this file contains only setting

Python静态网页爬取:批量获取高清壁纸

前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我们要下载高清的图) 4.保存图片 实际操作时,我们实现了如下几步网页地址的访问:打开了壁纸的网页→单击壁纸图打开指定页面→选择分辨率,点击后打开最终保存目标图片网页→保存图片 在爬虫的过程中我们就尝试通过模拟浏览器打开网页的操作,一步步获得.访问网页.最后获得目标图片的下载地址,对图片进行下载保存到

[python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pythonpython爬虫正则表达式html知识总结 2016-04-07 06:13 3615人阅读 评论(4) 收藏 举报  分类: Python爬虫(23)  Python基础知识(17)  版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ 这篇文章主要是介绍Pytho

python爬虫:爬取易迅网价格信息,并写入Mysql数据库

本程序涉及以下方面知识: 1.python链接mysql数据库:http://www.cnblogs.com/miranda-tang/p/5523431.html   2.爬取中文网站以及各种乱码处理:http://www.cnblogs.com/miranda-tang/p/5566358.html   3.BeautifulSoup使用 4.原网页数据信息不全用字典的方式,把不存在的字段设置为空 详细代码: #!/usr/bin/python # -*- encoding:utf-8 -*

[Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

一. 文章介绍 前一篇文章"[python爬虫] Selenium爬取新浪微博内容及用户信息"简单讲述了如何爬取新浪微博手机端用户信息和微博信息. 用户信息:包括用户ID.用户名.微博数.粉丝数.关注数等. 微博信息:包括转发或原创.点赞数.转发数.评论数.发布时间.微博内容等. 它主要通过从文本txt中读取用户id,通过"URL+用户ID" 访问个人网站,如柳岩: http://weibo.cn/guangxianliuya 因为手机端数据相对精简简单,所以采用输

[python学习] 简单爬取维基百科程序语言消息盒

文章主要讲述如何通过Python爬取维基百科的消息盒(Infobox),主要是通过正则表达式和urllib实现:后面的文章可能会讲述通过BeautifulSoup实现爬取网页知识.由于这方面的文章还是较少,希望提供一些思想和方法对大家有所帮助.如果有错误或不足之处,欢迎之处:如果你只想知道该篇文章最终代码,建议直接阅读第5部分及运行截图. 一. 维基百科和Infobox 你可能会疑惑Infobox究竟是个什么东西呢?下面简单介绍. 维基百科作为目前规模最大和增长最快的开放式的在线百科系统,其典型

[python爬虫] Selenium爬取内容并存储至MySQL数据库

前面我通过一篇文章讲述了如何爬取CSDN的博客摘要等信息.通常,在使用Selenium爬虫爬取数据后,需要存储在TXT文本中,但是这是很难进行数据处理和数据分析的.这篇文章主要讲述通过Selenium爬取我的个人博客信息,然后存储在数据库MySQL中,以便对数据进行分析,比如分析哪个时间段发表的博客多.结合WordCloud分析文章的主题.文章阅读量排名等.        这是一篇基础性的文章,希望对您有所帮助,如果文章中出现错误或不足之处,还请海涵.下一篇文章会简单讲解数据分析的过程. 一.