爬虫抓取网页的三个基本步骤:

  • 获取网页 html (用 request 包)
  • 解析网页,找到我们想要的内容(用 beautifulsoup 包等)
  • 输出内容

找到一个在线红楼梦网址:https://www.shicimingju.com/book/hongloumeng.html

从这个网站抓取红楼梦,不过这个网站缺少 28 回,代码如下:

# -*- coding: utf-8 -*-
"""
Created on Wed Mar 25 20:59:20 2020@author: zhen chenMIT Licence.Python version: 3.7Description: crawling the online novle "hong lou meng""""import requests  # 联系网络的包,a package for requesting from websites
import re  # 正则表达式包,for cutting the punctuations
from bs4 import BeautifulSoup # 分析网页数据的包,a package for webstie data analysis
import time
import random# 获取网页信息
def get_url_content(url):headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36'}  # 主要是模拟浏览器登录,防止反爬r = requests.get(url, headers=headers, timeout=30)  # 获取网页的内容,并返回给r变量,timeout 为超时时间r.raise_for_status() # 检查返回网页的内容的状态码,200表示成功r.encoding = r.apparent_encoding # 统一编码方式return r.text # 返回网页中的文本内容,数据内容为 r.content# 解析出网页中想要的信息,爬虫的关键步骤
def filter_info(url_text):soup = BeautifulSoup(url_text, "lxml")  # 解析网页返回内容,lxml 是一个解码方式,效率比较快,被推荐使用#title = soup.find('h1').get_text() # 寻找便签 h1 中的内容,作为标题title = soup.title.text # 也可以这样获取 title# title = re.sub(r'\s', '', title, count=2)  # 将前两个空格替换# 使用 get_text 可以读取网页里面的换行,而 text 不能chapter_content = soup.select('.chapter_content')[0].get_text(separator="\n")  # select(.类名) 查找网页中的类,因为返回的是列表,所以跟 [0]# chapter_content2 = soup.find_all('div', class_ = 'chapter_content')[0].textchapter_content = chapter_content.lstrip()  # 去除左边的空格chapter_content = chapter_content.rstrip()  # 去除右边的空格this_chapter = [title, chapter_content]return this_chapter# 将每章内容输出到 txt 文档里
def write_txt(string_array):file_address = 'E:/爬虫练习/红楼梦/'  # txt 存放地址file_name = string_array[0]f = open(file_address+file_name+'.txt', 'w', encoding='utf-8') # 必须跟解码形式,不然有的网页中文内容写不到txt里f.write(string_array[1])f.close()# 主函数
def main():# 一共 120 回,每一回一个网页for i in range(120):try:chapter_num = str(i + 1)url = 'https://www.shicimingju.com/book/hongloumeng/' + chapter_num + '.html' # 各回的网页网址url_content = get_url_content(url)  # 获取网页chapter_content = filter_info(url_content)  # 解析网页内容,提取小说write_txt(chapter_content)  # 输出小说内容到 txttime.sleep(random.random()*2) # 每抓一个网页休息0~2秒,防止被反爬措施封锁 IPexcept: # 第 28 回缺失,跳过错误,继续抓continuemain() # 执行函数

转载于个人公众号:Python 统计分析与数据科学

python 爬虫入门--抓取红楼梦小说相关推荐

  1. python 爬虫入门--抓取名著古籍

    古诗文网中的名著古籍比较多,选取从这个网站上抓. https://so.gushiwen.cn/guwen/ 可以在上面选取任一个古籍,点击打开复制链接,然后在下面代码中替换相应古籍的链接. 下面代码 ...

  2. python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?

    原标题:初学者如何用"python爬虫"技术抓取网页数据? 在当今社会,互联网上充斥着许多有用的数据.我们只需要耐心观察并添加一些技术手段即可获得大量有价值的数据.而这里的&quo ...

  3. python爬虫之爬取起点中文网小说

    python爬虫之爬取起点中文网小说 hello大家好,这篇文章带大家来制作一个python爬虫爬取阅文集团旗下产品起点中文网的程序,这篇文章的灵感来源于本人制作的一个项目:电脑助手 启帆助手 ⬆是项 ...

  4. python抓取网页电话号码_利用正则表达式编写python 爬虫,抓取网页电话号码!...

    利用正则表达式编写python 爬虫,抓取网页联系我们电话号码!这里以九奥科技(www.jiuaoo.com)为例,抓取'联系我们'里面的电话号码,并输出. #!/usrweilie/bin/pyth ...

  5. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  6. python抓取视频违法吗,科学网—【python爬虫】抓取B站视频相关信息(一) - 管金昱的博文...

    昨天我在B站上写了这么一篇文章,但是被他们锁住了.无奈之下我复制到知乎上先保存起来 在这篇名为<三天学会用python进行简单地爬取B站网页视频数据>文章中我主要提到了两点在已知aid的情 ...

  7. Python爬虫采集抓取:Python3.x+Fiddler 采集抓取 APP 数据

    随着移动互联网的市场份额逐步扩大,手机 APP 已经占据我们的生活,以往的数据分析都借助于爬虫采集爬取网页数据进行分析,但是新兴的产品有的只有 APP,并没有网页端这对于想要提取数据的我们就遇到了些问 ...

  8. python爬虫_抓取瓦片图片信息并将其拼接_以mapbar为例(适用交通工程类专业)

    python爬虫_抓取瓦片图片信息并将其拼接_以mapbar为例(适用交通工程类专业) 这次就以mapbar为例爬取道路交通拥堵情况 第一步,瓦片标号解析 第二步,拼url,然后下载 第三步,图片拼接 ...

  9. Python爬虫:抓取智联招聘岗位信息和要求(进阶版)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:王强 ( 想要学习Python?Python学习交流群 ...

最新文章

  1. 美国波特兰市禁用人脸识别,被违规监控可获赔1000美元
  2. 011_html标题
  3. 内网穿透和内网映射区别是什么?
  4. java concurrency_GitHub - CL0610/Java-concurrency: Java并发知识点总结
  5. react脚手架搭建项目目录介绍
  6. 012-ViewState状态保持
  7. 【Flink】No tests found matching Method xx from org.junit.internal.requests.ClassRequest
  8. Mac下Intellij IDea发布Web项目详解一
  9. HTML5_增强可访问性和解决IE兼容性问题
  10. 体验Unity2017.2.0f3进行Vuforia开发
  11. CMOS数字集成电路
  12. ue4账号注册不了_UE4入门(一)软件安装教程
  13. 使用Petalinux定制自己的linux系统
  14. 贪心科技机器学习训练营(七)
  15. 数据结构c语言版李冬梅PDF,数据结构(C语言版) 习题答案 严蔚敏 李冬梅 吴伟民 23490数据结构习题答案.pdf...
  16. CNN | 00卷积神经网络应用
  17. Python量化分析应该怎么做 ?
  18. python华表_鹤归华表 丁令威化鹤
  19. Python调用华为API进行图像标签
  20. 快来新宇宙:物联网与元宇宙融合发展

热门文章

  1. JAVA各个方向的三角形
  2. 游戏建模:3DMax和Maya到底哪个更好用?
  3. 第一个微信小程序做了啥?搞定头痛的法语动词变位「法语动词变位记忆小助手」
  4. python下划线的 5 种含义
  5. c语言如何取字符串,c语言如何截取字符串?
  6. python环境的搭建以及pycharm的安装和简单配置
  7. 微信小游戏开发之CocosCreator多分辨率场景适配方案
  8. java根据逗号拆分_Excel技巧—超实用的字符串拆分小技巧
  9. 6-65 分词并输出排序后的单词
  10. 昔日利刃---ICESWORD也不太行了啵