Python3.x:抓取百事糗科段子

实现代码:

 #Python3.6 获取糗事百科的段子
import urllib.request #导入各类要用到的包
import urllib
import re #用正则表达式爬取糗事百科的段子,并实现去除带有的图片段子,且每按一次回车键实现显示下一条段子
#写这程序的原理是先把网页爬下来,再解析匹配源代码中的段子,并把所有的带图片和不带图片的段子都进行保存
#再在输出段子时实现控制输出就能实现只输出不带图片的段子,并实现每按一次快捷键就显示下一个段子的内容
#就是好像每一页都有二十个段子的。。。。只爬下来十九。。。。 class QSBK():
def __init__(self):
self.url='http://www.qiushibaike.com/hot/page/' #基础网址
self.user_agent='Mozilla/4.0(cpmpatible;MSIE 5.5;Windows NT)' #要添加的headers
self.headers={'User-Agent':self.user_agent}
self.item_joke=[] #用来保存段子的列表 #请求函数
def request(self,page):
request=urllib.request.Request(self.url+str(page),headers=self.headers)
response=urllib.request.urlopen(request)
return response.read().decode('utf-8') #将源代码进行编码转换为HTML格式 #将获取到的网页和正则表达式进行匹配并返回匹配到的每个段子的信息列表
def get_joke(self,content):
try:
pattern = re.compile('<.*?class="author.*?>.*?<a.*?<h2>(.*?)</h2>.*?<div.*?class="content".*?<span>(.*?)</span>(.*?)<div class="stats.*?class="number">(.*?)</i>',re.S)
self.item_joke.append(re.findall(pattern, content)) #将获取到的每一页的段子追加到存储列表中
except urllib.error.URLError as e:
if hasattr(e, "code"):
print(e.code)
if hasattr(e, "reason"):
print(e.reason) #逻辑函数
def logic(self):
page=input('输入你想要进行爬取的页数:')
for i in range(int(page)):
content=self.request(i+1)
self.get_joke(content) print('输出段子:')
i=0 #用来记录无图的段子
print('每按一次快捷键读取一条段子,按Q退出!')
for items in self.item_joke: #由于爬取到的数据返回是以列表形式返回一整夜的段子的,所以要用for循环嵌套进行输出
for item in items:
input_=input()
if input_=='Q':
return
if not re.search('img',item[2]): #筛选无图的段子输出
i+=1
print('\n作者:'+str(item[0]),'\n内容:'+str(item[1])+'\n点赞人数:'+str(item[3]))
print('\n段子输出完毕!\n段子数量为:',i) qiushibaike=QSBK()
qiushibaike.logic()

Python3.x:抓取百事糗科段子的更多相关文章

  1. 笔趣看小说Python3爬虫抓取

    笔趣看小说Python3爬虫抓取 获取HTML信息 解析HTML信息 整合代码 获取HTML信息 # -*- coding:UTF-8 -*- import requests if __name__ ...

  2. 使用Python3爬虫抓取网页来下载小说

    很多时候想看小说但是在网页上找不到资源,即使找到了资源也没有提供下载,小说当然是下载下来用手机看才爽快啦! 于是程序员的思维出来了,不能下载我就直接用爬虫把各个章节爬下来,存入一个txt文件中,这样, ...

  3. python3 IEDriver抓取时报数据

    最近做了测试抓取XX时报的数据,由于需要事先登录,并且有验证码,关于验证码解决有两个途径:一是利用打码平台,其原理是把验证码的图片上传发送给打码平台, 然后返回其验证码.二就是自己研究验证码技术问题. ...

  4. 关于Python3爬虫抓取网页Unicode

    import urllib.requestresponse = urllib.request.urlopen('http://www.baidu.com')html = response.read() ...

  5. win7下用python3.3抓取网上图片并下载到本地

    这篇文章是看了网上有人写了之后,才去试试看的,但是因为我用的是python3.3,与python2.x有些不同,所以就写了下来,以供参考. get_webJpg.py #coding=utf-8 im ...

  6. 使用Python3.x抓取58同城(南京站)的演出票的信息

    #!/usr/bin/env python #-*-coding: utf-8 -*- import re import urllib.request as request from bs4 impo ...

  7. Python3 urllib抓取指定URL的内容

    最近在研究Python,熟悉了一些基本语法和模块的使用:现在打算研究一下Python爬虫.学习主要是通过别人的博客和自己下载的一下文档进行的,自己也写一下博客作为记录学习自己过程吧.Python代码写 ...

  8. python3爬虫抓取智联招聘职位信息代码

    上代码,有问题欢迎留言指出. # -*- coding: utf-8 -*- """ Created on Tue Aug 7 20:41:09 2018 @author ...

  9. 【python3】 抓取异常信息try/except

    注意:老版本的Python,except语句写作"except Exception, e",Python 2.6后应写作"except Exception as e&qu ...

随机推荐

  1. ELKStack之消息队列

    redis消息队列 安装redis yum -y install redis 修改配置文件 修改ip 后台运行 启动 systemctl start redis 查看 lsof -i:6379 连接 ...

  2. HOJ 2156 &POJ 2978 Colored stones(线性动规)

    Colored stones Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1759 Accepted: 829 Descrip ...

  3. UVA 11776 - Oh Your Royal Greediness! - [贪心/模拟]

    题目链接:https://cn.vjudge.net/problem/UVA-11776 题意: 给出数字n(0<=n<=1000),代表有n个农民,接下来有n行,每行两个数字S和E代表这 ...

  4. POJ 2342 - Anniversary party - [树形DP]

    题目链接:http://poj.org/problem?id=2342 Description There is going to be a party to celebrate the 80-th ...

  5. Oracle Function:COUNT

    Description The Oracle/PLSQL COUNT function returns the count of an expression. The COUNT(*) functio ...

  6. hadoop HA架构安装部署(QJM HA)

    ###################HDFS High Availability Using the Quorum Journal Manager########################## ...

  7. FW 编译Android系统源码和内核源码

    编译Android系统源码和内核源码 分类: Android2014-07-21 20:58 7287人阅读 评论(28) 收藏 举报 好长时间没有写blog了,之所以没有写,主要还是工作上的事,发现 ...

  8. Postman 工具模拟Ajax请求

    1.请求方式 post 2.headers设置:X-Requested-With:XMLHttpRequest    代码判断是以此为依据的 (Content-Type:application/x-w ...

  9. router-link params传参

    1.router.js配置 需要在路径后定义上要传的属性名 -->       /:属性名(query方式不需要) { path: '/CreateProgress/:name1', name: ...

  10. 【Echarts】图表用echarts【待完善】

    echarts是做数据统计. ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox ...