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. 2.1TF模型持久化

    目前tf只能保存模型中的variable变量,整个模型还不能保存,版本1.x 保存模型代码 import tensorflow as tf import numpy as np # Save to f ...

  2. HDU 1281 - 棋盘游戏 - [二分图最大匹配]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1281 Time Limit: 2000/1000 MS (Java/Others) Mem ...

  3. Oracle管理监控之如何对数据库进行监控检查

    oracle自动工作负载库(AWR):采集与性能相关的统计数据,并从统计的数据中导出性能量度,以跟踪数据库潜在的问题. 如何生成oracle数据库的自动负载库报告. 手工生成一份oracle数据库的快 ...

  4. Oracle安装部署之linux(redhat/centos)快速安装oracle 11g rac

    安装oracle 11gR2 RAC 一.网络规划及安装虚拟主机 主机名 主机版本 Ip rac1.localdomain Redhat 6.5 RAC节点1 192.168.100.11 rac2. ...

  5. flask简单的路由分发

    flask简单的路由分发 from flask import Flask, request app = Flask(__name__) @app.route('/hello') def index() ...

  6. 前端 html input标签 placeholder属性 标签上显示内容

    前端 html  input标签 的placeholder属性  标签上显示内容 <!DOCTYPE html> <html lang="en"> < ...

  7. Linux Packages Search

    网站 : https://www.pkgs.org/ https://centos.pkgs.org/

  8. windows使用方法

    1:截图搜索英文单词:snipping tool 2: 修改语言,搜索language 3:关闭fn键,按键 fn+esc(fnlock).  就可以将fn关闭和开启.

  9. requesMapping注解

    java类 package org.springframework.web.bind.annotation; import java.lang.annotation.Documented; impor ...

  10. 重读《Java编程思想》

    相关最新代码已上传至我的GitHub了(https://github.com/WenyangSun/ThinkingInJava),后续例子没有在博客上更新. 1.在类的内部,变量定义的先后顺序决定了 ...