一个简单的网络爬虫入门python(包括开发环境搭建和pycharm激活)
off999 2024-10-23 12:42 18 浏览 0 评论
基本任务:
I 搭建python开发环境
II 写一个简单的网络爬虫,在某一个网站将一部小说各章节(一般是一个章节一个网页)粘贴到一个文本文件内。
1 首先了解几个概念
1.1 网络爬虫
网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。
网络爬虫可以模拟浏览器浏览网页,自动批量下载网络资源(能够访问到的,放在网络服务器的文件)。
传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
1.2 小说网站的基本结构
首页(总目录)→分类→小说目录页→小说各章节;
1.3 与网站的交互
通常都是用户通过浏览器(当IE)访问网站(网络上的服务器)。
浏览器:网址(href)、请求(requests)→网站服务器:响应(response)给浏览器→浏览器:缓存并呈现回复的内容。
1.4 开发环境
用高级语言写的代码需要解释或编码到机器代码,才能被计算机执行。
所以开发一个程序,最基本的需求是一个文本编辑器(写)和解释器或编译器。
开发复杂的程序,需要调试查错、需要引入第三方库,需要边结各文件,所以,一般来说,一个简单的文本编辑器加一个解释器或编译器是不够的,需要一个支持某种高级语言的调试器的较复杂的编辑器。这样的编辑器同时还支持可以方便写代码(如颜色分类显示、代码提示)的插件加入。
2 搭建python开发环境
2.1 下载和安装解释器python3.6
2.1.1 python解释器下载地址:https://www.python.org/downloads/release/python-365/
2.1.2 关于环境变量path,就是可以保证执行python命令时,不需要输入安装路径。在安装时如果有直接勾选了"add python to path"则在安装时即自动配置了path的安装路径;
path变量中有了安装路径后,即可直接在CMD中输入python,可以看到相关反馈相信,即表示安装和环境变量配置OK了;
如果不安装代码编辑器或专用IDE,也可以在CMD中输入python,进行交互式开发;
2.2 下载和安装代码编辑器加调试器:pycharm4
PyCharm 由著名的JetBrains公司开发,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工 具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。
2.2.1 代码编辑器pycharm下载地址http://www.jetbrains.com/pycharm/download/#section=windows
2.2.2进入激活界面,选择第二个License server,之后在License server address中随意输入下面两个注册码中的任意一个即可,http://idea.liyang.io或http://xidea.online。
激活后的状态:
3 添加第三方模块
第三方模块添加工具pip必须在安装python3.5时有勾选安装。
编辑或新建C:\Users\wwuhnwu01\pip\pip.ini:
[global]
respect-virtualenv = true
download-cache = f:/Python/pip/cache
log-file = f:/Python/pip/pip.log
[install]
timeout = 30
find-links = http://pypi.douban.com
find-links = http://pypi.douban.com/simple
pycharm→文件→setting→project interpreter→pip→右边加号+→manage repositories→右边加号+→添加第三方模块的镜像服务器http://pypi.douban.com/和http://pypi.douban.com/simple
如果还是连接不上第三方模块服务器,有时需要重启一下pycharm。
4 一个简单的网络爬虫
3.1 新建项目
3.2 设置项目编译器
基本的思路:
进入一个小说的目录页,请求到目录(包括各章节的href和章节标题)的内容,提取到全部的href,再通过各href请求到各网页的内容,经过数据清洗和适当的回到,写入到一个文本文件
代码:
以上代码运行后,即可把整部小说的内容写入文本文件。
不同的网站,内面内容的写法会有差别,在提取数据和清洗数据时要做相应调整变化。
一些网站会禁止爬虫,当你尝试爬取网站资源时,一些网站会有反爬策略,将你的IP加入黑名单,当你爬取或访问时,页面会响应为:“HTTP Error 403: Forbidden错误”。
附源代码:
import requests
import re
# 1 获取小说目录页
url = 'http://www.xiaoshuotxt.org/wuxia/1617/'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text
title = re.findall(r'<meta name="keywords" content="(.*?),',html)[0]
# 4 数据持久化,写入txt)
fb = open('%s.txt'%title, 'w', encoding='utf-8');
# 2 提取章节
menu = re.findall(r'正文(.*?)</table>',html)[0]
chapter_info_list = re.findall(r'<a href="(.*?)" title=".*?">(.*?)</a>',menu)
# 3 循环访问章节,并获取内容
for chapter_info in chapter_info_list:
chapter_url = chapter_info[0]
chapter_title = chapter_info[1]
if 'http' not in chapter_url:
chapter_url = 'http://www.xiaoshuotxt.org%s' % chapter_url
chapter_response = requests.get(chapter_url)
chapter_response.encoding = 'utf-8'
chapter_html = chapter_response.text
# 数据提取
chapter_content = re.findall(r'<div class="panel-body" id="htmlContent">(.*?)</div>',chapter_html)
# 数据清洗(按页面规律)
chapter_content = chapter_content.replace(' ','')
chapter_content = chapter_content.replace('<br /><br /><br>','')
# 数据持久化(写入txt),先要在前面新建文件
fb.write(chapter_title)
fb.write('\n')
fb.write(chapter_content)
fb.write('\n')
#用以下语句可以看到动态过程
print(chapter_url)
-End-
相关推荐
- python入门到脱坑经典案例—清空列表
-
在Python中,清空列表是一个基础但重要的操作。clear()方法是最直接的方式,但还有其他方法也可以实现相同效果。以下是详细说明:1.使用clear()方法(Python3.3+推荐)...
- python中元组,列表,字典,集合删除项目方式的归纳
-
九三,君子终日乾乾,夕惕若,厉无咎。在使用python过程中会经常遇到这四种集合数据类型,今天就对这四种集合数据类型中删除项目的操作做个总结性的归纳。列表(List)是一种有序和可更改的集合。允许重复...
- Linux 下海量文件删除方法效率对比,最慢的竟然是 rm
-
Linux下海量文件删除方法效率对比,本次参赛选手一共6位,分别是:rm、find、findwithdelete、rsync、Python、Perl.首先建立50万个文件$testfor...
- 数据结构与算法——链式存储(链表)的插入及删除,
-
持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持上篇文章我们讲述了链表的基本概念及一些查找遍历的方法,本篇我们主要将一下链表的插入删除操作,以及采用堆栈方式如何创建链表。链...
- Python自动化:openpyxl写入数据,插入删除行列等基础操作
-
importopenpyxlwb=openpyxl.load_workbook("example1.xlsx")sh=wb['Sheet1']写入数据#...
- 在Linux下软件的安装与卸载(linux里的程序的安装与卸载命令)
-
通过apt安装/协助软件apt是AdvancedPackagingTool,是Linux下的一款安装包管理工具可以在终端中方便的安装/卸载/更新软件包命令使用格式:安装软件:sudoapt...
- Python 批量卸载关联包 pip-autoremove
-
pip工具在安装扩展包的时候会自动安装依赖的关联包,但是卸载时只删除单个包,无法卸载关联的包。pip-autoremove就是为了解决卸载关联包的问题。安装方法通过下面的命令安装:pipinsta...
- 用Python在Word文档中插入和删除文本框
-
在当今自动化办公需求日益增长的背景下,通过编程手段动态管理Word文档中的文本框元素已成为提升工作效率的关键技术路径。文本框作为文档排版中灵活的内容容器,既能承载多模态信息(如文字、图像),又可实现独...
- Python 从列表中删除值的多种实用方法详解
-
#Python从列表中删除值的多种实用方法详解在Python编程中,列表(List)是一种常用的数据结构,具有动态可变的特性。当我们需要从列表中删除元素时,根据不同的场景(如按值删除、按索引删除、...
- Python 中的前缀删除操作全指南(python删除前导0)
-
1.字符串前缀删除1.1使用内置方法Python提供了几种内置方法来处理字符串前缀的删除:#1.使用removeprefix()方法(Python3.9+)text="...
- 每天学点Python知识:如何删除空白
-
在Python中,删除空白可以分为几种不同的情况,常见的是针对字符串或列表中空白字符的处理。一、删除字符串中的空白1.删除字符串两端的空白(空格、\t、\n等)使用.strip()方法:s...
- Linux系统自带Python2&yum的卸载及重装
-
写在前面事情的起因是我昨天在测试Linux安装Python3的shell脚本时,需要卸载Python3重新安装一遍。但是通过如下命令卸载python3时,少写了个3,不小心将系统自带的python2也...
- 如何使用Python将多个excel文件数据快速汇总?
-
在数据分析和处理的过程中,Excel文件是我们经常会遇到的数据格式之一。本文将通过一个具体的示例,展示如何使用Python和Pandas库来读取、合并和处理多个Excel文件的数据,并最终生成一个包含...
- 【第三弹】用Python实现Excel的vlookup功能
-
今天继续用pandas实现Excel的vlookup功能,假设我们的2个表长成这样:我们希望把Sheet2的部门匹在Sheet1的最后一列。话不多说,先上代码:importpandasaspd...
- python中pandas读取excel单列及连续多列数据
-
案例:想获取test.xls中C列、H列以后(当H列后列数未知时)的所有数据。importpandasaspdfile_name=r'D:\test.xls'#表格绝对...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python自定义函数 (53)
- python进度条 (67)
- python吧 (67)
- python字典遍历 (54)
- python的for循环 (65)
- python格式化字符串 (61)
- python串口编程 (60)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python人脸识别 (54)
- python多态 (60)
- python命令行参数 (53)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)