写在开头

刚刚入门Python,一切都是摸索阶段。把自己的问题记录下来避免之后再犯相同的错误。运气好或许还能帮助有缘人( ⊙o⊙ )

Python入门

Python的简单入门主要需要看两个文档:requestsbs4。链接如下:
requests
bs4

爬虫实例学习

在真正开始写自己的第一个爬虫的实例前,在网上看了其他许多大神的教程。这里是我第一个复制练习的例子:
大神教程
这是一个一周天气的信息的爬取。我使用的PyCharm编译器,这个IDE的优点就是可以帮助下载相应的包。

糗百笑话爬取

在复制大神的代码并运行成功后,我便开始在这个代码的基础上加以修改,运用于糗百网页。这里主要爬取了第一页的用户名、内容、点赞数和评论数。以下是代码,基本没有很大的改变。主要是bs4的运用。

  • 需要引用的包
# coding : UFT-8
import requests
import csv
import random
import time
import socket
import http.client
import os
from bs4 import BeautifulSoup
  • 获取html页面内容代码
def get_info( url, data = None):header = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Encoding': 'gzip, deflate, sdch','Accept-Language': 'zh-CN,zh;q=0.8','Connection': 'keep-alive','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'}timeout = random.choice(range(60,180))while True :try:rep = requests.get(url, headers = header, timeout = timeout)rep.encoding = 'utf-8'breakexcept socket.timeout as e:print('3:',e)time.sleep(random.choice(range(8,15)))except socket.error as e:print('4:', e)time.sleep(random.choice(range(20, 60)))except http.client.BadStatusLine as e:print('5:', e)time.sleep(random.choice(range(30, 80)))except http.client.IncompleteRead as e:print('6:', e)time.sleep(random.choice(range(5, 15)))return rep.text

这里主要就是参考第一个代码实例,基本没有变化。

  • 获取html内容中需要的字段
def get_data(html ):final = []bs = BeautifulSoup(html, "html.parser")body = bs.bodycontent_left = body.find(id = 'content-left') #找到该页总框contents = content_left.find_all('div',class_ = 'article block untagged mb15')#找到所有内容框for content in contents: #对每个故事进行遍历temp = []author = content.find('div',class_='author clearfix')#找到用户user_name = content.find("h2").string#获取用户名temp.append(user_name)#添加到list中data = content.find(class_ = 'content')story = data.find('span').get_text()#找到笑话内容temp.append(story)#添加到list中numbers = content.find_all('i', class_ = 'number')#查找评论和点赞数good = numbers[0].string + '好笑'#获取点赞数temp.append(good)comment = numbers[1].string + '评论'#获取评论数temp.append(comment)final.append(temp)return final

这里主要是对bs4的运用。但是需要注意story这个数据,通过Chrome的F12可以看到这个部分有时候包含了<br>标签。这是因为有些用户使用了换行符。如果再使用.string将得不到结果。这里可以用get_text()获取整个内容。

  • 写入CSV

  • 主函数
    这两个部分与实例代码一致,只是url不一样而已。

最后结果

Python1--糗事百科笑话爬取相关推荐

  1. Python爬虫:获取糗事百科笑话

    为了收集笑话也是挺拼的,我就不相信你所有的都看过了.还有,请问哪位仁兄能指点之下怎么把网上抓取到的图片写到word里面,捉摸了好久都没弄出来.   糗百不需要登录,html直接解析,只要在reques ...

  2. php仿糗事百科,基于thinkphp框架开发仿糗事百科笑话系统

    安装环境: 需要PHP版本5.3以上+MYSQL+ZEND+伪静态 基本功能介绍 1.会员中心(发帖.审贴.动态.我的投稿.站内消息.我的礼品(积分记录.兑换记录).个人资料(资料修改.头像修改.密码 ...

  3. 爬虫爬取糗事百科段子

    目录 糗事百科段子爬取 爬虫功能介绍 所需软件 网页解析 找到所需信息所在代码段 获取信息 编程思路分析 获取当前所有段子 对提取的内容进行优化 数据合并 查看点赞数最多的内容 总结 最后 附代码 糗 ...

  4. 5 使用ip代理池爬取糗事百科

    从09年读本科开始学计算机以来,一直在迷茫中度过,很想学些东西,做些事情,却往往陷进一些技术细节而蹉跎时光.直到最近几个月,才明白程序员的意义并不是要搞清楚所有代码细节,而是要有更宏高的方向,要有更专 ...

  5. Scrapy糗事百科爬虫实战代码分析

    Scrapy糗事百科爬虫实战代码分析 视频教学网址:[python爬虫_从入门到精通(高级篇)]scrapy框架.反爬.分布式爬虫 一.Scrapy糗事百科之爬取单页数据并保存 具体的创建方法可以参照 ...

  6. 爬取糗事百科段子 + 数据可视化

    文章目录 一.前言 二.selenium爬取段子信息 三.绘制词云图 四.散点图 一.前言 糗事百科的段子栏目声称:幽默笑话大全__爆笑笑话__笑破你的肚子的搞笑段子,我们用 Python 来看看糗事 ...

  7. 爬虫实战 爬取糗事百科

    偶然看到了一些项目,有爬取糗事百科的,我去看了下,也没什么难的 首先,先去糗事百科的https://www.qiushibaike.com/text/看一下, 先检查一下网页代码, 就会发现,需要爬取 ...

  8. python3 爬虫之爬取糗事百科

    闲着没事爬个糗事百科的笑话看看 python3中用urllib.request.urlopen()打开糗事百科链接会提示以下错误 http.client.RemoteDisconnected: Rem ...

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

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

最新文章

  1. 2018全球大学AI排名:清华位列亚洲大学综合排名首位
  2. Python入门100题 | 第050题
  3. Eclipse集成lombok插件 解决@Data标签get/set方法找不到异常
  4. linux 内核高端内存意义,Linux内核高端内存管理
  5. [Git] Ubuntu 上更新 git
  6. 一天不学习我浑sen难受(一)—一致性哈希/Hash环学习笔记
  7. 一切都不象看起来那么严重 — 关于Fraud Clicks
  8. 继承、关联、聚合、组合的代码表示
  9. AndroidManifest中android:label与第三方库冲突问题
  10. Mac笔记本外接显示器竖屏设置
  11. 三维激光扫描仪点云数据处理与建模
  12. 带通滤波器中心频率计算公式中R是哪个值_【火腿专题】三个零件组成矿石收音机的惊喜,LC电路谐振频率换算及零件选购是关键...
  13. Robomaster云台,底盘,陀螺仪校准
  14. [爆笑网文]结婚前,请带她去游泳
  15. java中常见的几个内置类
  16. Excel表格中从右往左指定字符分割的字串提取
  17. 短视频营销为什么能火起来?
  18. Synopsys Sentaurus TCAD系列教程之-- Sdevice《2》File模块
  19. 国外建模大师精心总结,成为建模高手的必备技巧
  20. 区块链技术在食品质量追溯中的应用

热门文章

  1. 做人和做事哪个是前提
  2. Maven的-pl用法
  3. JVM 新生代老生代
  4. 令人沮丧的是,我们还在谈论微创新。更他妈的为媒体整体报道这些无聊的互联网公司的微创新恶心。
  5. Salient Obejct Detection(SOD)综述
  6. Python引用pymssql模块打包报错的解决方法
  7. 5个借势小技巧,教你打造中秋爆款营销活动
  8. 国内外做视频会议比较牛的公司有哪些?
  9. 基于GM(0,N)的时间序列预测R实现
  10. DELL Inspiron(灵越)14-5648拆机指南