python网站数据写入mysql_python网络爬虫抓取动态网页并将数据存入数据库MySQL
简述
以下的代码是使用python实现的网络爬虫,抓取动态网页 http://hb.qq.com/baoliao/ 。此网页中的最新、精华下面的内容是由JavaScript动态生成的。审查网页元素与网页源码是不同。
以上是网页源码
以上是审查网页元素
所以此处不能简单的使用正则表达式来获取内容。
以下是完整的获取内容并存储到数据库的思路及源码。
实现思路:
抓取实际访问的动态页面的url – 使用正则表达式获取需要的内容 – 解析内容 – 存储内容
以上部分过程文字解释:
抓取实际访问的动态页面的url:
在火狐浏览器中,右键打开插件 使用**firebug审查元素** *(没有这项的,要安装firebug插件),找到并打开**网络(NET)**标签页。重新加载网页,获得网页的响应信息,包括连接地址。每个连接地址都可以在浏览器中打开。本网站的动态网页访问地址是:
http://baoliao.hb.qq.com/api/report/NewIndexReportsList/cityid/18/num/20/pageno/1?callback=jQuery183019859437816181613_1440723895018&_=1440723895472
正则表达式:
正则表达式的使用有两种思路,可以参考个人有关其简述:python实现简单爬虫以及正则表达式简述
更多的细节介绍可以参考网上资料,搜索关键词: 正则表达式 python
json:
参考网上有关json的介绍,搜索关键词: json python
存储到数据库:
参考网上的使用介绍,搜索关键词: 1,mysql 2,mysql python
源码及注释
注意:使用python的版本是 2.7
#!/usr/bin/python#指明编码#-*- coding: UTF-8 -*-
#导入python库
importurllibimporturllib2importreimportMySQLdbimportjson#定义爬虫类
classcrawl1:def getHtml(self,url=None):#代理
user_agent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"header={"User-Agent":user_agent}
request=urllib2.Request(url,headers=header)
response=urllib2.urlopen(request)
html=response.read()returnhtmldefgetContent(self,html,reg):
content=re.findall(html, reg, re.S)returncontent#连接数据库 mysql
defconnectDB(self):
host="192.168.85.21"dbName="test1"user="root"password="123456"
#此处添加charset='utf8'是为了在数据库中显示中文,此编码必须与数据库的编码一致
db=MySQLdb.connect(host,user,password,dbName,charset='utf8')returndb
cursorDB=db.cursor()returncursorDB#创建表,SQL语言。CREATE TABLE IF NOT EXISTS 表示:表createTableName不存在时就创建
defcreatTable(self,createTableName):
createTableSql="CREATE TABLE IF NOT EXISTS"+ createTableName+"(time VARCHAR(40),title VARCHAR(100),text VARCHAR(40),clicks VARCHAR(10))"DB_create=self.connectDB()
cursor_create=DB_create.cursor()
cursor_create.execute(createTableSql)
DB_create.close()print 'creat table'+createTableName+'successfully'
returncreateTableName#数据插入表中
definserttable(self,insertTable,insertTime,insertTitle,insertText,insertClicks):
insertContentSql="INSERT INTO"+insertTable+"(time,title,text,clicks)VALUES(%s,%s,%s,%s)"
#insertContentSql="INSERT INTO "+insertTable+"(time,title,text,clicks)VALUES("+insertTime+" , "+insertTitle+" , "+insertText+" , "+insertClicks+")"
DB_insert=self.connectDB()
cursor_insert=DB_insert.cursor()
cursor_insert.execute(insertContentSql,(insertTime,insertTitle,insertText,insertClicks))
DB_insert.commit()
DB_insert.close()print 'inert contents to'+insertTable+'successfully'url="http://baoliao.hb.qq.com/api/report/NewIndexReportsList/cityid/18/num/20/pageno/1?callback=jQuery183019859437816181613_1440723895018&_=1440723895472"
#正则表达式,获取js,时间,标题,文本内容,点击量(浏览次数)
reg_jason=r'.*?jQuery.*?\((.*)\)'reg_time=r'.*?"create_time":"(.*?)"'reg_title=r'.*?"title":"(.*?)".*?'reg_text=r'.*?"content":"(.*?)".*?'reg_clicks=r'.*?"counter_clicks":"(.*?)"'
#实例化crawl()对象
crawl=crawl1()
html=crawl.getHtml(url)
html_jason=re.findall(reg_jason, html, re.S)
html_need=json.loads(html_jason[0])printlen(html_need)print len(html_need['data']['list'])
table=crawl.creatTable('yh1')for i in range(len(html_need['data']['list'])):
creatTime=html_need['data']['list'][i]['create_time']
title=html_need['data']['list'][i]['title']
content=html_need['data']['list'][i]['content']
clicks=html_need['data']['list'][i]['counter_clicks']
crawl.inserttable(table,creatTime,title,content,clicks)
python网站数据写入mysql_python网络爬虫抓取动态网页并将数据存入数据库MySQL相关推荐
- python网页数据存入数据库_python网络爬虫抓取动态网页并将数据存入数据库MySQL...
简述 以下的代码是使用python实现的网络爬虫,抓取动态网页 http://hb.qq.com/baoliao/ .此网页中的最新.精华下面的内容是由JavaScript动态生成的.审查网页元素与网 ...
- python爬虫抓取动态网页数据_python网络爬虫抓取ajax动态网页数据:以抓取KFC门店地址为例...
一,尝试用BeautifulSoup抓取 先打开KFC网站门店列表页面:http://www.kfc.com.cn/kfccda/storelist/index.aspx 可以看到门店列表如下图: 打 ...
- python展示全部好友_利用Python网络爬虫抓取微信好友的签名及其可视化展示
前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...
- python爬虫好友聊天记录_利用Python网络爬虫抓取微信好友的签名及其可视化展示...
前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...
- 用python爬虫下载视频_使用Python编写简单网络爬虫抓取视频下载资源
我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...
- python爬虫好友图片_利用Python网络爬虫抓取微信好友的签名及其可视化展示
前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...
- 基于Thinkphp5+phpQuery 网络爬虫抓取数据接口,统一输出接口数据api
TP5_Splider 一个基于Thinkphp5+phpQuery 网络爬虫抓取数据接口 统一输出接口数据api.适合正在学习Vue,AngularJs框架学习 开发demo,需要接口并保证接口不跨 ...
- python爬虫微信朋友圈怎么发文字_如何利用Python网络爬虫抓取微信朋友圈的动态(上)...
今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...
- 用爬虫抓取动态加载数据丨Python爬虫实战系列(6)
提示:最新Python爬虫资料/代码练习>>戳我直达 前言 抓取动态加载数据 话不多说,开练! 爬虫抓取动态加载数据 确定网站类型 首先要明确网站的类型,即是动态还是静态.检查方法:右键查 ...
最新文章
- 序列化模块--json模块--pickle模块-shelve模块
- Spring Boot Admin 2 值得了解的新变化
- Everything Has Changed(HDU6354+圆交+求周长)
- Linux ALSA声卡驱动之三:PCM设备的创建
- 7-13 部落 (25 分)
- MESI--CPU缓存一致性协议
- 江阴南菁高考2021高考成绩查询,江阴8所四星级高中高考成绩公布 南菁高中本一进线率达到了92.97%...
- hadoop与mysql的区别_数据库与hadoop与分布式文件系统的区别和联系
- 授权普通非DBA用户可以有权限查看执行计划的方法
- linux网络子系统分析(四)—— INET连接建立API分析之connect/accept
- 常见的路由器(刷openwrt的同学看下!)
- 死锁——哲学家就餐问题
- 刷网课被告非法控制计算机信息系统罪,您好,请问一下网上代刷网课叫非法控制计算...
- PHP文件上传接口(带参数)
- 麻省理工大学线性代数1806(2)消元法及矩阵消元法 矩阵行变换、列变换 置换矩阵 逆矩阵 如沐春风、如饮甘露、醍醐灌顶的线性代数
- android的权限一览表和RGB颜色对照表
- 小程序设置整个页面背景
- Servlet中文API文档-个人整理版
- 基于GIS探究环境和生态因子对水体、土壤、大气污染物的影响
- 玩转toB安全市场!火绒企业安全产品评测
热门文章
- JMeter定制功能实现
- 华中科技大学计算机学院发表论文规定,华中科技大学等7所大学取消“研究生毕业必须发表论文”要求...
- python数据处理常用函数_pytorch中的自定义数据处理详解
- MySQL命令之mysqldump的选项详解
- mysql导入三个基本表_mysql 基础导入导出
- php的变量都放在哪里,php变量一般放在哪个位置
- C++ 11 深度学习(九)C++文件IO
- 【H.264/AVC视频编解码技术】第一章【H264视频编码详细解析】
- pcb板材的tg是什么_做到这6点,PCB过回焊炉不会出现板弯及板翘!
- Linux C语言编程基本原理与实践