Python爬取糗事百科段子

Python2.7.15
今天我们来爬取糗事百科的段子

一、获取糗事百科的网页源码

首先,打开浏览器,进入糗事百科,复制它的网址。


然后我们翻个页,可以看到,网址变成了这样,加上了页码。

待会我们用代码翻页,就是更改这个网址最后的这个数字。

首先,我们引入代码对应的模块

# coding=utf-8
import urllib2
import re
import MySQLdb

utf-8是中文编码
urllib2模块的方法获取网页
re模块用来写正则表达式
MySQLdb是MySQL数据库对应的模块

老办法获取网页源码
不过这次加了一个for循环来翻页

for page in range(1,14):url = "https://www.qiushibaike.com/8hr/page/" + str(page) + "/"user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'headers = { 'User-Agent' : user_agent }request = urllib2.Request(url, headers=headers)response = urllib2.urlopen(request)content = response.read()

二、匹配正则

得到网页源码后,我们可以在源码里看到很多段子和很多的发布人,这里面有的段子是文字形式的,有的是图片,因为图片文字混在一起存比较麻烦所以我们先来简单的,只爬取并保存文字形式的段子。

先看源码

h2标签里是发布者的名称


span标签里是文字内容


a标签里是图片,如果该段子有图片的话

这三项是连在一起的,使用正则抓取它们

这里的re.S是多行匹配的意思

三、输出它们,并写入数据库

输出操作

    for item in items:haveImg = re.search("jpg", item[2])if not haveImg:new1 = re.sub('\n','', item[0])new2 = re.sub('\n','', item[1])new3 = new2.translate(None, "<br/>")print new1print new3

创建表(首先你得有数据库,并有你要写入的这个表)


conn=MySQLdb.connect(host="127.0.0.1",user="root",passwd="199855pz",db="pz",charset='utf8')
print '连接成功'
cursor = conn.cursor()
cursor.execute("DROP TABLE IF EXISTS DUANZI")
sql = '''CREATE TABLE DUANZI(name char(10) ,joke char(255))'''
cursor.execute(sql)

插入表

            insert_duanzi = ("INSERT INTO DUANZI(name,joke)" "VALUES(%s,%s)")data_duanzi = (new1, new3)cursor.execute(insert_duanzi, data_duanzi)
conn.commit()

四、完整代码与结果

# coding=utf-8
import urllib2
import re
import MySQLdbconn=MySQLdb.connect(host="127.0.0.1",user="root",passwd="199855pz",db="pz",charset='utf8')
print '连接成功'
cursor = conn.cursor()
cursor.execute("DROP TABLE IF EXISTS DUANZI")
sql = '''CREATE TABLE DUANZI(name char(10) ,joke char(255))'''
cursor.execute(sql)for page in range(1,14):url = "https://www.qiushibaike.com/8hr/page/" + str(page) + "/"user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'headers = { 'User-Agent' : user_agent }request = urllib2.Request(url, headers=headers)response = urllib2.urlopen(request)content = response.read()print contentpattern = re.compile('<h2>(.*?)</h2>.*?<span>(.*?)</span>.*?</a>(.*?)<div class="stats">', re.S)items = re.findall(pattern, content)for item in items:haveImg = re.search("jpg", item[2])if not haveImg:new1 = re.sub('\n','', item[0])new2 = re.sub('\n','', item[1])new3 = new2.translate(None, "<br/>")print new1print new3insert_duanzi = ("INSERT INTO DUANZI(name,joke)" "VALUES(%s,%s)")data_duanzi = (new1, new3)cursor.execute(insert_duanzi, data_duanzi)
conn.commit()

Python爬取糗事百科段子相关推荐

  1. Python爬取糗事百科段子+定时发送QQ邮箱

    文章目录 前言 1. 库导入及介绍 2. 获取网页源码 3. 提取需要的信息 4. 优化输出数据 5. 发送邮件 6. 实现定时发送 7. 源码 前言 学习Python爬虫也有段时间了,总想着搞点事做 ...

  2. 利用Python爬取糗事百科段子信息

    文章来源:公众号-智能化IT系统. 爬虫技术目前越来越流行,这里介绍一个爬虫的简单应用. 爬取的内容为糗事百科文字内容中的信息,如图所示: 爬取糗事百科文字35页的信息,通过手动浏览,以下为前四页的网 ...

  3. 用Python爬取糗事百科段子,可视化后结果发现

    大家好,我是小五???? 生活真是太苦了,需要找点快乐的精神食粮支撑社畜生活,听说糗事百科段子挺多,今天就来看一看! 糗事百科的段子栏目声称:幽默笑话大全__爆笑笑话__笑破你的肚子的搞笑段子,我们用 ...

  4. Python爬虫实战(1):爬取糗事百科段子

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  5. python爬虫经典段子_Python爬虫实战(1):爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  6. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

  7. Python爬虫实战之爬取糗事百科段子

    Python爬虫实战之爬取糗事百科段子 完整代码地址:Python爬虫实战之爬取糗事百科段子 程序代码详解: Spider1-qiushibaike.py:爬取糗事百科的8小时最新页的段子.包含的信息 ...

  8. Python爬虫实战一之爬取糗事百科段子

    点我进入原文 另外, 中间遇到两个问题: 1. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 解 ...

  9. Python之爬取糗事百科段子实战

    "简说Python",选择"置顶/星标公众号" 福利干货,第一时间送达! 阅读本文大约6分钟,实战学习,老表建议你反复看,反复记,反复练. // 本文作者 王豪 ...

最新文章

  1. crosstab交叉表_透视图和交叉表
  2. TX的8B/10B编码功能
  3. [临时]关于tar.gz .gz的压缩研究
  4. asp.net 报表页面模板_20套大屏模板,教你3分钟制作出酷炫的可视化大屏
  5. __macosx_在5分钟内在MacOSX Lion中设置JAVA_HOME,MAVEN_HOME,ANT_HOME
  6. java referencequeue_java源代码 Reference和ReferenceQueue分析
  7. 正向有功正向无功_电表_正向有功、反向无功
  8. DateTime和DateTime2
  9. cocos2dx 字体外发光_Cocos2d-x 3.x开发塔防游戏《王国保卫战》02:地图(一)
  10. 从jvm层面来看多线程问题
  11. Nissi商城序章(一):项目概述及架构
  12. Unity Asset Store下载资源存储在本地的路径
  13. 全民营销,只看这篇文章就够了
  14. window.name属性详解(Javascript)
  15. es 切换别名_Elasticsearch之别名
  16. 2021-07-16 yarn Total VCores allocated for Containers 与服务器上cpu核数不一致原因
  17. java数据算法,验证身份证号码的合法性
  18. 电脑显示远程计算机或设备将不接受连接的解决办法,已解决
  19. 你需要启用steam社区界面功能以进行购买_Steam游戏库界面大改!这也太帅了
  20. paper阅读笔记(ABSA)(LCF-BERT):LCF: A Local Context Focus Mechanism forAspect-Based Sentiment Classifica

热门文章

  1. 《当代青年血槽已空图鉴》
  2. java延迟加载 dbutils_Lettuce
  3. VUE 怎么样做 ‘暂无数据’
  4. 旅行商问题+背包问题--经典问题
  5. Mac 为啥不显示图片尺寸,点了显示简介也不显示??修复Mac点击图片的显示简介,图片尺寸消失问题
  6. 第二次网页前端培训(HTML)
  7. kubernete编排技术三:StatefulSet
  8. [攻防世界]maze
  9. shell调用python获取返回值_[linux的shell脚本调用python脚本的返回值][shell调python][ubuntu的shell调用python脚本得到返回值]...
  10. dos命令创建(删除)文件(文件夹)的几种常见方式