一个简单的网络爬虫入门python(包括开发环境搭建和pycharm激活)

  1. 云栖社区>
  2. 博客>
  3. 正文

一个简单的网络爬虫入门python(包括开发环境搭建和pycharm激活)

qq1622479435 2018-06-02 08:39:23 浏览4241
展开阅读全文

基本任务:

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

想学习可以加Python学习(q-u-n )-二二七,四三五,四五零 即可获取,内附:开发工具和安装包,以及视频资料系统学习路线图

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开发。


一个简单的网络爬虫入门python(包括开发环境搭建和pycharm激活)

2.2.2进入激活界面,选择第二个License server,之后在License server address中随意输入下面两个注册码中的任意一个即可,http://idea.liyang.io或http://xidea.online。

一个简单的网络爬虫入门python(包括开发环境搭建和pycharm激活)

激活后的状态:

一个简单的网络爬虫入门python(包括开发环境搭建和pycharm激活)

3 添加第三方模块

第三方模块添加工具pip必须在安装python3.5时有勾选安装。

编辑或新建C:Userswwuhnwu01pippip.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

一个简单的网络爬虫入门python(包括开发环境搭建和pycharm激活)

如果还是连接不上第三方模块服务器,有时需要重启一下pycharm。

4 一个简单的网络爬虫

3.1 新建项目

3.2 设置项目编译器

基本的思路:

进入一个小说的目录页,请求到目录(包括各章节的href和章节标题)的内容,提取到全部的href,再通过各href请求到各网页的内容,经过数据清洗和适当的回到,写入到一个文本文件

代码:

一个简单的网络爬虫入门python(包括开发环境搭建和pycharm激活)

一个简单的网络爬虫入门python(包括开发环境搭建和pycharm激活)

以上代码运行后,即可把整部小说的内容写入文本文件。

不同的网站,内面内容的写法会有差别,在提取数据和清洗数据时要做相应调整变化。

一些网站会禁止爬虫,当你尝试爬取网站资源时,一些网站会有反爬策略,将你的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(' ')

fb.write(chapter_content)

fb.write(' ')

#用以下语句可以看到动态过程

print(chapter_url)

-End-

网友评论

登录后评论
0/500
评论
qq1622479435
+ 关注