# -*- coding:UTF-8 -*-
from urllib import request
from bs4 import BeautifulSoup
import chardet
import re
def download(urls):
#下载for item in urls:print(item[3] + ':' + 'http://www.biquge.com.tw' + item[1])#输出一下找到了那些章节,与对应的网址sure = input("是否下载这些章节y/n(下载在当前目录下,访问上面链接可以直接观看):")if sure == 'y' or sure == 'Y':for item in urls:f = open(item[3], mode='w+', encoding='utf-8')#创建文本用章节名命名download_url = 'http://www.biquge.com.tw' + item[1]head = {}head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19'download_req = request.Request(url=download_url, headers=head)download_response = request.urlopen(download_req)download_html = download_response.read().decode('gbk', 'ignore')soup_texts = BeautifulSoup(download_html, 'lxml')#获取章节的内容页,解码并结构化texts = soup_texts.find_all(id="content")soup_text = BeautifulSoup(str(texts), 'lxml')#找到需要的内容f.write(soup_text.div.text.replace('\xa0', ''))#把不要的字符去掉如何写入文本f.closeprint(item[3]+" 下载完成\n")print('all down')return
def find_url(target_url):
#从目录页获取每一个章节的网址head = {}head['User-Agent'] = "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19"req = request.Request(url=target_url, headers=head)#设置代理头,这个网站不知道python的默认头能不能访问response = request.urlopen(req)html = response.read()code = chardet.detect(html)['encoding']#这个不能用,因为它会识别为简体但是还有一部分是繁体html = html.decode('gbk')#用gbk解码支持简繁soup = BeautifulSoup(html, 'html.parser')#用beatifulsoup结果化一下,不要也可以  result = re.findall('<a(.*?)href\=\"(.*?)\"(.*?)>(.*?)</a>', str(soup.find_all(id='list')))#正则匹配download(urls=result)
def search(txt_name):
#利用笔趣阁网站的搜索功能target_name = str(txt_name.encode("GBK")).upper()#这个网站用的get方法,搜索的内容用GBK编码加在后面,但并不是直接加要变换target_url = 'http://www.biquge.com.tw/modules/article/soshu.php?searchkey='i = 2while i < len(target_name) - 1:if target_name[i] == '\\':target_url += '%'i += 2continuetarget_url += target_name[i]i += 1#此时的target_url的内容就是处理后的网址head = {}head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19'req = request.Request(url=target_url, headers=head)html = request.urlopen(req)if target_url != html.geturl():#这个网站如果搜索结果只有一个就会自动打开print("已经找到,正在提取\n")target_url=html.geturl()find_url(target_url)returnhtml = html.read().decode('GBK')result = re.finditer(r'<td class="odd"><a href="(.*?)">(.*?)</a>', html)#正则匹配flag = 0for item in result:#在多个结果中找到我们要的那个,此处修改可以支持模糊化搜索if item[2] == txt_name:target_url = item[1]print("已经找到,正在提取\n")find_url(target_url=target_url)returnprint('找不到')
if __name__=='__main__':name = input("输入要找的小说名称:")search(txt_name=name)

python 人生的第一个小爬虫 爬小说 保存一下相关推荐

  1. 小爬虫爬取小猫咪图片并存入本地文件夹

    小爬虫爬取小猫咪图片并存入本地文件夹 本人是安徽工业大学电气与信息工程学院研一学生,最近还不能开学真的是很糟心哦,由于自己比较笨吧,起步较晚还要忙着学习机器学习还有计算机视觉,但是总学这个感觉很闷也没 ...

  2. 第一个python爬虫_Python爬虫01——第一个小爬虫

    Python小爬虫--贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后实现对用户所给的链接进行抓取 最后要有一定的 ...

  3. Python爬虫01——第一个小爬虫

    原文:https://www.cnblogs.com/Axi8/p/5757270.html Python小爬虫--贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. ...

  4. Python日记——柿子要捡软的捏,记第一只小爬虫

    2017.12.19 阅读了<零基础入门学习Python>一书第14章"论一只爬虫的自我修养"之后总想跃跃欲试实现一只自己的小爬虫,但可惜的是,或许因为这本书的读者太多 ...

  5. 写个小爬虫爬下迅雷会员

    好久不写爬虫...忘了个锤子.于是借着学java的机会用java写个爬虫 爬取静态页面 迅雷会员账号和密码.时时获取最新的~ 先上我暑假写的python版~ : # -*- coding: utf-8 ...

  6. python搞笑动态图_python小爬虫抓取搞笑图片

    大部分小程序都是基于py2.7的,我于是便想直接出一个py3.4最新版本的教程.大致看一下第一篇了解一下的一些概念性的东西以及bs4第三方库的使用.请参考文末. 我们的第一个小程序的相关要求: 目标: ...

  7. python将txt转为字符串_python做第一只小爬虫

    "受尽苦难而不厌,此乃修罗之路" 本文技术含量过低,请谨慎观看 之前用R语言的Rcurl包做过爬虫,给自己的第一感觉是比较费劲,看着看着发际线就愈加亮眼,最后果断丢之.不过好的是和 ...

  8. Python爬虫——第一个小爬虫(经典)修改版

    贴吧图片的爬取 一.页面获取 要让python可以进行对网页的访问,那肯定要用到urllib之类的包.So先来个 import urllib.request 由于Python3里的urllib模块已经 ...

  9. python小爬虫(爬取职位信息和博客文章信息)

    1.python爬取招聘信息 简单爬取智联招聘职位信息(仅供学习) # !/usr/bin/env python # -*-coding:utf-8-*- """ @Au ...

最新文章

  1. 一周内,在闲鱼上被疯狂转了 2 万次的 Linux 命令大全!!!
  2. win10系统 计算机配置要求高吗,win10配置要求_win10配置要求高吗-太平洋电脑网
  3. wps合并所有sheet页_Python一键合并上千个Excel表,一天的工作量一小时搞定!下班...
  4. 海南工会云会员认证_五一有奖答题来了,欢迎广大工会会员登录参与活动
  5. shopex证书无法安装解决方法探讨
  6. Mac OS defaults命令(Access the Mac OS user defaults system)
  7. 小学奥数 7654 等差数列末项计算 python
  8. 42 WM配置-作业-库存盘点-定义默认设置
  9. Java连接Elasticsearch6.xxx 环境测试篇一
  10. 设计师分享社区,展示风采平台
  11. CCF NOI1007 计算余数
  12. HCIE-Security Day32:IPSec:深入学习ipsec ikev1、主模式、野蛮模式、快速模式、dh算法、预共享密钥
  13. NET Core-学习笔记(二)
  14. 物联网时代即将到来,LED显示屏内容显示安全尤为重要
  15. 怎么把mov转换为mp4?
  16. Nginx+Tomcat实现负载均衡、动静分离集群部署
  17. 读懂 指令、程序、微命令、微操作、微指令、微程序、微地址
  18. 最全的阿里面试经验(一)
  19. Markdown个人学习记录
  20. 用PHP写了个 标签 按点击率的 字体大小和颜色的 显示效果

热门文章

  1. 请列举出3个Vue中常用的生命周期钩子函数?
  2. 【转】“百度被黑” 分析师认为不亚于制造“911事件”
  3. 【Grafana】【八】可视化之Stat、Gauge和Bar Gauge
  4. NIS详解(概念、搭建NIS服务器、实验演示)
  5. 技术科普丨平台效果调试篇3-AWB Gain Adjust
  6. 五福背后的 Web 3D 引擎 Oasis Engine 正式开源
  7. MySQL 技术内幕——存储引擎
  8. additional、extra与supplementary 区别
  9. pytest—pytest.mark.parametrize的使用
  10. A ResourcePool could not acquire a resource from its primary factory or source异常解决