简述

以下的代码是使用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相关推荐

  1. python网页数据存入数据库_python网络爬虫抓取动态网页并将数据存入数据库MySQL...

    简述 以下的代码是使用python实现的网络爬虫,抓取动态网页 http://hb.qq.com/baoliao/ .此网页中的最新.精华下面的内容是由JavaScript动态生成的.审查网页元素与网 ...

  2. python爬虫抓取动态网页数据_python网络爬虫抓取ajax动态网页数据:以抓取KFC门店地址为例...

    一,尝试用BeautifulSoup抓取 先打开KFC网站门店列表页面:http://www.kfc.com.cn/kfccda/storelist/index.aspx 可以看到门店列表如下图: 打 ...

  3. python展示全部好友_利用Python网络爬虫抓取微信好友的签名及其可视化展示

    前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...

  4. python爬虫好友聊天记录_利用Python网络爬虫抓取微信好友的签名及其可视化展示...

    前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...

  5. 用python爬虫下载视频_使用Python编写简单网络爬虫抓取视频下载资源

    我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...

  6. python爬虫好友图片_利用Python网络爬虫抓取微信好友的签名及其可视化展示

    前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...

  7. 基于Thinkphp5+phpQuery 网络爬虫抓取数据接口,统一输出接口数据api

    TP5_Splider 一个基于Thinkphp5+phpQuery 网络爬虫抓取数据接口 统一输出接口数据api.适合正在学习Vue,AngularJs框架学习 开发demo,需要接口并保证接口不跨 ...

  8. python爬虫微信朋友圈怎么发文字_如何利用Python网络爬虫抓取微信朋友圈的动态(上)...

    今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...

  9. 用爬虫抓取动态加载数据丨Python爬虫实战系列(6)

    提示:最新Python爬虫资料/代码练习>>戳我直达 前言 抓取动态加载数据 话不多说,开练! 爬虫抓取动态加载数据 确定网站类型 首先要明确网站的类型,即是动态还是静态.检查方法:右键查 ...

最新文章

  1. 序列化模块--json模块--pickle模块-shelve模块
  2. Spring Boot Admin 2 值得了解的新变化
  3. Everything Has Changed(HDU6354+圆交+求周长)
  4. Linux ALSA声卡驱动之三:PCM设备的创建
  5. 7-13 部落 (25 分)
  6. MESI--CPU缓存一致性协议
  7. 江阴南菁高考2021高考成绩查询,江阴8所四星级高中高考成绩公布 南菁高中本一进线率达到了92.97%...
  8. hadoop与mysql的区别_数据库与hadoop与分布式文件系统的区别和联系
  9. 授权普通非DBA用户可以有权限查看执行计划的方法
  10. linux网络子系统分析(四)—— INET连接建立API分析之connect/accept
  11. 常见的路由器(刷openwrt的同学看下!)
  12. 死锁——哲学家就餐问题
  13. 刷网课被告非法控制计算机信息系统罪,您好,请问一下网上代刷网课叫非法控制计算...
  14. PHP文件上传接口(带参数)
  15. 麻省理工大学线性代数1806(2)消元法及矩阵消元法 矩阵行变换、列变换 置换矩阵 逆矩阵 如沐春风、如饮甘露、醍醐灌顶的线性代数
  16. android的权限一览表和RGB颜色对照表
  17. 小程序设置整个页面背景
  18. Servlet中文API文档-个人整理版
  19. 基于GIS探究环境和生态因子对水体、土壤、大气污染物的影响
  20. 玩转toB安全市场!火绒企业安全产品评测

热门文章

  1. JMeter定制功能实现
  2. 华中科技大学计算机学院发表论文规定,华中科技大学等7所大学取消“研究生毕业必须发表论文”要求...
  3. python数据处理常用函数_pytorch中的自定义数据处理详解
  4. MySQL命令之mysqldump的选项详解
  5. mysql导入三个基本表_mysql 基础导入导出
  6. php的变量都放在哪里,php变量一般放在哪个位置
  7. C++ 11 深度学习(九)C++文件IO
  8. 【H.264/AVC视频编解码技术】第一章【H264视频编码详细解析】
  9. pcb板材的tg是什么_做到这6点,PCB过回焊炉不会出现板弯及板翘!
  10. Linux C语言编程基本原理与实践