爬取起点中文网某本小说实例:

  1. # -*-coding:utf8-*-
  2. import requests
  3. import urllib
  4. import urllib2
  5. from bs4 import BeautifulSoup
  6. import sys
  7. reload(sys)
  8. sys.setdefaultencoding('utf-8') #读写中文内容
  9.  
  10. class QDZW:
  11. def __init__(self, url):
  12. self.url = url #网址
  13. self.user_agent = 'Mozilla/5.0 (Windows NT 6.1; (Windows NT 6.1; WOW64; rv:62.0) Gecko/20100101 Firefox/61.0' #请求头属性(模拟浏览器访问)
  14. self.headers = {'User-Agent' : self.user_agent}
  15.  
  16. #获取网址静态HTML(如果未访问成功,则持续访问,直到访问成功为止)
  17. def gethtml(self):
  18.  
  19. try:
  20. #return requests.get(self.url,headers = self.headers,time_out = 2)
  21. request = urllib2.Request(self.url,headers = self.headers)
  22. response = urllib2.urlopen(request,time_out = 2) #设置访问时长限制
  23. temp = False
  24. return response
  25. except Exception as e:
  26. print e
  27. #解析HTML内容,获取需要的内容
  28. def novel(self):
  29. while True:
  30. r = self.gethtml()
  31. while r == 'None': #r内容为空表示访问超时,则继续访问
  32. r = self.gethtml()
  33. #print r.encoding #输出编码类型
  34. soup = BeautifulSoup(r ,"html.parser") #利用BeautifulSoup解析网址内容,class前加 . id前加 #
  35. #select输出内容为数组,select参数从body中一级结点开始即可,可逐级叠加定位
  36. #XXX.text为读取标签中的内容 XXX.attrs['xx']为读取 XXX中属性为xx的值 ,XXX为HTML格式的文本
  37. section_name = soup.select(' .wrap #j_readMainWrap #j_chapterBox .text-wrap .main-text-wrap .text-head .j_chapterName')[0].text
  38. print section_name
  39. section_text = soup.select('.wrap #j_readMainWrap #j_chapterBox .text-wrap .main-text-wrap .read-content')[0].text
  40. section_text = self.spliting(section_text)
  41. #print section_text
  42. self.writing(section_name + "\r\n" + section_text)
  43.  
  44. next_url = soup.select('.wrap #j_readMainWrap .chapter-control #j_chapterNext')[0]
  45. #print next_url.text
  46. if next_url.text == "下一章":
  47. self.url = "https:" + next_url.attrs['href']
  48. else:
  49. break
  50. #在去掉<p></p>的位置添加换行符号“\r\n”
  51. def spliting(self, string):
  52. str_split = string.split() #以split()中参数为标准,切割字符串
  53. string = ""
  54. for text in str_split:
  55. if text != "":
  56. string = string + " " + text + "\r\n"
  57. return string
  58. #输出读取的novel内容
  59. def writing(self, novel):
  60. outputs = open(unicode('至尊剑皇.txt','utf8'),'a') #a为追加型写入
  61. outputs.write(novel)
  62. outputs.close()
  63.  
  64. qdzw = QDZW('https://read.qidian.com/chapter/JDViC81SWM41/pskSqRrpbXDgn4SMoDUcDQ2') #参数为初始网址
  65. qdzw.novel()

python应用:爬虫实例(静态网页)的更多相关文章

  1. Python开发爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据

    所谓静态页面是指纯粹的HTML格式的页面,这样的页面在浏览器中展示的内容都在HTML源码中. 目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/t ...

  2. python网络爬虫之解析网页的BeautifulSoup(爬取电影图片)[三]

    目录 前言 一.BeautifulSoup的基本语法 二.爬取网页图片 扩展学习 后记 前言 本章同样是解析一个网页的结构信息 在上章内容中(python网络爬虫之解析网页的正则表达式(爬取4k动漫图 ...

  3. Python 多进程爬虫实例

    Python  多进程爬虫实例 import json import re import time from multiprocessing import Pool import requests f ...

  4. Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

  5. python网络爬虫之解析网页的正则表达式(爬取4k动漫图片)[三]

    前言 hello,大家好 本章可是一个重中之重,因为我们今天是要爬取一个图片而不是一个网页或是一个json 所以我们也就不用用到selenium模块了,当然有兴趣的同学也一样可以使用selenium去 ...

  6. python爬虫之静态网页——全国空气质量指数(AQI)爬取

    首先爬取地址:http://www.air-level.com/ 利用的python库,最近最流行的requests,BeautifulSoup. requests:用于下载html Beautifu ...

  7. python应用:爬虫实例(动态网页)

    以爬取搜狗图片为例,网页特点:采用“瀑布流”的方式加载图片,图片的真实地址存放在XHR中 #-*-coding:utf8-*- import requests import urllib import ...

  8. 怎么用Python写爬虫抓取网页数据

    机器学习首先面临的一个问题就是准备数据,数据的来源大概有这么几种:公司积累数据,购买,交换,政府机构及企业公开的数据,通过爬虫从网上抓取.本篇介绍怎么写一个爬虫从网上抓取公开的数据. 很多语言都可以写 ...

  9. 一、python简单爬取静态网页

    一.简单爬虫框架 简单爬虫框架由四个部分组成:URL管理器.网页下载器.网页解析器.调度器,还有应用这一部分,应用主要是NLP配合相关业务. 它的基本逻辑是这样的:给定一个要访问的URL,获取这个ht ...

随机推荐

  1. wxPython控件学习之wx.grid.Grid 表格控件

    wxPython控件学习之wx.grid.Grid (包括对GridCellEditor和GridCelRender的扩展,以支持更多的grid cell 样式, 以GridCellColorEdit ...

  2. [转载]AMOLED结构详解,BOE专家给你分析驱动补偿

    关键词: AMOLED, 驱动补偿 有机发光显示二极管(OLED)作为一种电流型发光器件已越来越多地被应用于高性能显示中.由于它自发光的特性,与LCD相比,AMOLED具有高对比度.超轻薄.可弯曲等诸 ...

  3. PB调用C#编写的DLL

    C#以其简单易用,功能强大深受大家喜爱.PowerBuilder作为C/S的MIS开发工具,十分简单灵活,开发时间短,开发及维护成本低,一直是中小企业信息管理系统的首选开发工具.但是PB的局限性限制了 ...

  4. June 13th 2017 Week 24th Tuesday

    There are no regrets in life, just lessons. 人生中没有后悔,只有教训. Some people can learn from their past mist ...

  5. Document flow API in SAP CRM and C4C

    Document flow API in CRM 以一个具体的例子来说明.在Appointment的Overview page上能看见一个名叫Reference的区域,这里可以维护一些其他的业务文档的 ...

  6. BZOJ4066:简单题(K-D Tree)

    Description 你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作:   命令 参数限制 内容 1 x y A 1<=x,y<=N,A是正整数 ...

  7. System.Chare的成员

    实现效果: 知识运用: System.Char的静态方法 (判断一个给定的字符是否为数字 字母 标点符号或其他) 实现效果: static void CharFunctionality() { Con ...

  8. 使用pako.js实现gzip的压缩和解压

    poko.js可至Github下载:https://github.com/nodeca/pako 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  9. jstl 中substring,length等函数用法

    引入jstl库:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%& ...

  10. laravel5项目安装debugbar

    链接:https://github.com/barryvdh/laravel-debugbar 1.项目目录运行 composer require barryvdh/laravel-debugbar ...