原文链接:http://www.nicemxp.com/articles/12

背景:抓取捧腹网首页的段子和搞笑图片链接

如图:

地址:https://www.pengfu.com/

首页中有很多子页面:

这里抓取前10页的段子和图片链接。

首先写一个获取页面的接口,捧腹网页面可以直接获取,不需要做特殊处理,代码如下:

# -*- coding:utf-8 -*-#Python抓取网页必备的库
import urllib
import urllib2
#正则表达式
import re
#user-agent
user_agent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"#抓取页面接口,参数为地址和referer
def getHtml(url, referer = None):try:#构建页面请求的头部headers = {'User-Agent':user_agent, "Referer":referer}#构建页面请求request = urllib2.Request(url, headers=headers)#请求目的页面,设置超时时间为45秒response =  urllib2.urlopen(request, timeout = 45)#读取数据html = response.read()return html#如果请求异常except urllib2.URLError, e:if hasattr(e, "code"):print e.codeelif hasattr(e, "reason"):print e.reasonreturn None

获取页面之后对页面进行提取处理,捧腹网的每一个段子是一个整体,在一个块级结构里,所以先对一个页面提取出所有的段子,然后在提取每个段子的文字描述和图片链接。

首先提取所有的段子,代码:

#捧腹网地址
PENGFU_URL = "https://www.pengfu.com/index_{0}.html"
#获取页面
html = getHtml(PENGFU_URL.format(1))
#提取段子的正则表达式
pattern = re.compile('<dl class="clearfix dl-con">(.*?)</dl>', re.S)
#获得所有的段子
articleRes = re.findall(pattern, html)

获取的所有的段子后,提取内容,捧腹网的段子要么是搞笑文字描述,要么是图片,其中图片有动图gif和静图,所以接下来循环遍历所有的段子,提取搞笑内容。代码:

#遍历段子
for article in articleRes:#取图片或内容,有图片则提取图片,没有图片则提取文字描述#静图链接正则表达式pattern = re.compile('<div class="content-img.*?<img.*?jpgsrc="(.*?)".*?>.*?</div>', re.S)#提取静图链接jpg = re.search(pattern, article)#动图链接正则表达式pattern = re.compile('<div class="content-img.*?<img.*?gifsrc="(.*?)".*?>.*?</div>', re.S)#提取动图链接gif = re.search(pattern, article)#判断是否有图片if (jpg != None) or (gif != None):#取链接link = (gif != None) and gif.group(1) or jpg.group(1)#存入结果Res.append(link)else: #没有图片,提取文字描述#文字描述正则表达式pattern = re.compile('<div class="content-img.*?>(.*?)</div>', re.S)#提取文字描述content = re.search(pattern, article)if content == None:continueelse:#存入结果Res.append(content.group(1))

这样获取了一个页面的所有的段子,获取前10页的段子同理,只需写一个遍历生成10个地址,逐一获取这10个地址的段子就好了。

接下来打印出提取的内容,代码:

#打印结果
for v in Res:print(v.decode('utf8'))

结果如下:

python爬虫之爬取捧腹网段子相关推荐

  1. java爬取捧腹网段子(多线程版)

    前文链接 : java爬取捧腹网段子 上一篇文章讲述了如何使用Java爬取内容并写入文件,但是速度堪忧,今天将代码搞成了多线程版本, 具体方式如下: 新建一个splider类,继承callable接口 ...

  2. java爬取捧腹网段子

    先上效果图: 准备工作: /*** 建立http连接*/ public static String Connect(String address) {HttpURLConnection conn = ...

  3. java 段子_java爬取捧腹网段子

    先上效果图: 准备工作: /** * 建立http连接 */ public static String Connect(String address) { HttpURLConnection conn ...

  4. java的段子_java爬取捧腹网段子(多线程版)

    上一篇文章讲述了如何使用Java爬取内容并写入文件,但是速度堪忧,今天将代码搞成了多线程版本, 具体方式如下: 新建一个splider类,继承callable接口,用于存放我们需要多线程执行的逻辑: ...

  5. python爬取捧腹网gif图片

    #_*_coding:utf-8_*_ #爬取捧腹网GIF图片 import urllib,re import urllib.request import chardet #需要导入这个模块,检测编码 ...

  6. python扇贝单词书,学习猿地-python 爬虫,爬取扇贝单词网单词

    对于python爬虫并不是很熟悉,遇到下面的问题,希望知道的朋友可以给个解决问题的方向! 需要爬出扇贝单词网里面单词书的单词,现在对于没有目录的单词书可以爬出来,如果有一层目录就没办法了 需要手动到这 ...

  7. 【python爬虫】爬取淘宝网商品信息

    相信学了python爬虫,很多人都想爬取一些数据量比较大的网站,淘宝网就是一个很好的目标,其数据量大,而且种类繁多,而且难度不是很大,很适合初级学者进行爬取.下面是整个爬取过程: 第一步:构建访问的u ...

  8. Python爬虫之爬取“天气后报网”的天气历史信息

    老规矩,先上代码: import re import requestsdef go_this_time(city,time):url = "http://www.tianqihoubao.c ...

  9. python爬虫经典段子_玩转python爬虫之爬取糗事百科段子

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

最新文章

  1. 【转】jQuery.ajax向后台传递数组问题
  2. c++设计模式编程基础
  3. 计算机网络(十五)-数据链路层-CSMA/CA协议
  4. 2021高考无准考证成绩查询,2021考研没有准考证号怎么查成绩
  5. ASP游戏工作室网站源码v1.0
  6. web项目中用户登录的具体流程
  7. 为什么腾讯云要自研云原生数据库 CynosDB?
  8. 2020中考可不可以用计算机,2020北京中考录取规则:北京中考计算机的录取规则...
  9. Google Chrome Top60 实用插件集合
  10. Java IO 和 NIO的区别
  11. 【Vegas原创】IPAD忘记密码重置恢复出厂设置
  12. 男人:你是“橙皮男”还是“草莓男”?
  13. 我的世界服务器总是显示错误,win 10 进mc服务器总是错误 怎么办
  14. 获取微信小程序页面路径【保姆级教程】
  15. 从数据库读取数据,该数据作为参数传入万得的wsd命令中
  16. Android 启动“无启动图标的 apk“
  17. 如何扩展VMware xp虚拟机磁盘
  18. jdk的环境变量,javac不是内部命令,也不是可运行的程序”的解决
  19. Windows Media Player 实现快进10秒
  20. 系统响应及系统稳定性

热门文章

  1. UNIX环境高级编程(屏幕打印和inet_ntoa输出异常问题)
  2. hexo博客优化之图床迁移google收录
  3. [CoffeeScript]编码风格指南
  4. 简单盘点下22年第一季度一直坚持的五件小事
  5. 学理发是先去学校还是去理发店学基础知识
  6. UVM--组件家族、uvm_monitor uvm_agent
  7. HTML的操作手册,Html的操作手册及编程
  8. Andriod Preference在电话设置的使用
  9. 蓝桥杯题目-报纸页数/煤球数/平方怪圈/打印方格/凑算式
  10. java编程计算器程序代码_34 个送给 Java 程序员的练手项目合集