掌握开发轻量级爬虫,这里的案例是不需要登录的静态网页抓取。涉及爬虫简介、简单爬虫架构、URL管理器、网页下载器(urllib2)、网页解析器(BeautifulSoup)

一.爬虫简介以及爬虫的技术价值

1.爬虫简介

爬虫:一段自动抓取互联网信息的程序。

爬虫是自动访问互联网,并且提取数据的程序。

2.爬虫价值

互联网数据,为我所用!

二.简单爬虫架构

运行流程:

三.URL管理器和实现方法

1.URL管理器

URL管理器:管理待抓取URL集合和已抓取URL集合,防止重复抓取、防止循环抓取

2.实现方式

四.网页下载器和urllib2模块

1.网页下载器

将互联网上URL对应的网页下载到本地的工具。

Python有哪几种网页下载器?

2.urllib2下载器网页的三种方法

a.urllib2下载网页方法1:最简法方法

b.urllib2下载网页方法2:添加data、http header

c.urllib2下载网页方法3:添加特殊情景的处理器

3.urllib2实例代码演示

由于我这里用的是python3.x,引用的不是urllib,而是urllib.request。

importurllib.requestimporthttp.cookiejar

url= "http://www.baidu.com"

print('第一种方法')

response1=urllib.request.urlopen(url)print(response1.getcode())print(len(response1.read()))print('第二种方法')

request=urllib.request.Request(url)

request.add_header("user-agent", "Mozilla/5.0")

response2=urllib.request.urlopen(request)print(response2.getcode())print(len(response2.read()))print('第三种方法')

cj=http.cookiejar.CookieJar()

opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))

urllib.request.install_opener(opener)

response3=urllib.request.urlopen(url)print(response3.getcode())print(cj)print(response3.read())

运行结果:

五.网页解析器和BeautifulSoup第三方模块

1.网页解析器简介

从网页中提取有价值数据的工具。

Python有哪几中网页解析器?

结构化解析-DOM(Document Object Model)树

2.BeautifulSoup模块介绍和安装

安装并测试BeautifulSoup4,安装:pip install beautifulsoup4

但这样安装成功后,在PyCharm中还是不能引入,于是再通过从官网上下载安装包解压,再安装,竟然还是不可以,依然报No module named 'bs4'。

没办法,最后在PyCharm中通过如下方式安装后才可以。

进入如下窗口。

点击“Install Package”进行安装,出现如下提示表明安装成功。

安装成功后,再次进入可以看到安装的版本等信息,如下所示。

3.BeautifulSoup的语法

4.BeautifulSoup实例测试

from bs4 importBeautifulSoupimportre

html_doc= """

The Dormouse's story

The Dormouse's story

Once upon a time there were three little sisters; and their names were

Elsie,

Lacie and

Tillie;

and they lived at the bottom of a well.

...

"""

#soup = BeautifulSoup(html_doc, 'html.parser', from_encoding='utf-8') python3 缺省的编码是unicode, 再在from_encoding设置为utf8, 会被忽视掉,去掉【from_encoding="utf-8"】

soup = BeautifulSoup(html_doc, 'html.parser')print("获取所有的链接")

links= soup.find_all('a')for link inlinks:print(link.name, link['href'], link.get_text())print("获取Lacie的链接")

link_node= soup.find('a', href="http://example.com/lacie")print(link_node.name, link_node['href'], link_node.get_text())print("正则匹配")

link_node= soup.find('a', href=re.compile(r"ill"))print(link_node.name, link_node['href'], link_node.get_text())print("获取p段落文字")

p_node= soup.find('p', class_="title")print(p_node.name, p_node.get_text())

运行结果:

六.实战演练:爬取百度百科1000个页面的数据

1.分析目标

目标:百度百科Python词条相关词条网页-标题和简介

URL格式:词条页面URL:/item/计算机程序设计语言/7073760

数据格式:

标题:

***

简介:

***

python简单爬虫程序分析_[Python专题学习]-python开发简单爬虫相关推荐

  1. python后端学什么框架_献给正在学习python的你, 10个最受欢迎的Python开源框架

    很多小伙伴在学习wen的时候说,有没有几个常用的框架,好多小伙伴都只说对了其中几个,只有少部分是说正确的,想要了解更多,欢迎大家订阅微信公众号:Python从程序猿到程序员,或者加4913.08659 ...

  2. python中continue用法案例_记录今天学习python中for与while循环针对break和continue的用法...

    python中有两个主要的循环for与while,其中针对这两个循环有两种不同的中断用法break与continue. 首先先看下面的循环代码: 1: for i in range(10):#变量i带 ...

  3. python零基础书推荐_零基础学习Python(Python初学者、Python入门)常见问题:资料、社区、书籍推荐...

    Python web开发 QQ学习群:338985564 ,欢迎各位加入,一起学习. 本文针对零基础的,想学习Python者.本文会不定时更新. 一.学会使用搜索引擎,尤其是Google. 推荐阅读文 ...

  4. python自学看不懂怎么办_零基础学习python但是基础教程一看到后面就开始看不懂了,怎么办?...

    廖大的教程看不懂不要担心,简明教程也看不下去也不要怕,世界上总有人基础比你好的,不过我们可以用笨办法来学习python. 0,先找一个python3版本的<笨办法学python>,从头看, ...

  5. python for loop循环程序语句_零基础学习 Python 之 for 循环语句

    写在之前 大家好,这里是零基础学习 Python 系列,在这里我将从最基本的Python 写起,然后再慢慢涉及到高阶以及具体应用方面.我是完全自学的 Python,所以很是明白自学对于一个人的考验,所 ...

  6. python编写一个简单的程序验证码_针对验证码,做一个简单的自动网上签到程序(一)...

    现在签到改成网络签到,比较麻烦,总是需要登陆再签,所以想着做个自动登录并签到的东西,看了看,其他的问题都不大,登录的东西很简单,就是post下就可以了. 查了查,主要问题在验证码部分,看了看,有几种途 ...

  7. python是高级程序语言_高级语言程序设计(Python)_中国大学MOOC(慕课)

    课程概述 "高级语言程序设计"类课程面向无编程基础的学生,培养其运用编程语言解决实际问题的编程能力,使学生掌握一门编程语言的基本语法.语句.控制结构以及结构化程序设计的基本思想和方 ...

  8. python从爬虫到数据分析项目_零基础学习Python web开发、Python爬虫、Python数据分析,从基础到项目实战!...

    随着大数据和人工智能的发展,目前Python语言的上升趋势比较明显,而且由于Python语言简单易学,所以不少初学者往往也会选择Python作为入门语言. Python语言目前是IT行业内应用最为广泛 ...

  9. python基于水色图像的水质评价_零基础学习Python的学习路线及教程

    什么是Python? 在过去的2017年里,Python开发者在全球快速增长,国内小伙伴学习 Python 的热情一路高涨.同时,PYPL发布7月编程语言指数榜,Python 在今年5月首次超越 Ja ...

最新文章

  1. 一种可以避免数据迁移的分库分表scale-out扩容方式
  2. 介绍两个Eclipse插件: Implementors Call Hierarchy
  3. [ARM-assembly]-A64的load/store指令总结
  4. 设计模式:各个模式间的对比
  5. shell 判断字符串是否存在包含关系
  6. 53. 最大子序和 golang (动态规划与贪心算法)
  7. 基础知识(十)C++常用函数.txt
  8. java 蓝桥杯算法训练 未名湖边的烦恼
  9. 算法 - 反转字符串
  10. java模拟内存溢出并分析_模拟内存溢出通过MAT分析
  11. vuejs+webpack环境搭建
  12. HDD + HDD(SSD) 多硬盘系统启动问题
  13. 标准软件开发过程 文档
  14. web前端 html+css+javascript网页设计实例 企业网站制作
  15. 最新dex2jar下载,网上很多dex2jar是2015年的,有bug无法翻译部分代码,最新更新的dex2jar下载
  16. 2020年终系列:国内区块链专利授权总数不足3000项|链塔智库
  17. java登录清除cookies_退出登录方法,清除相关的cookies和session
  18. macOS 13 Ventura系统自动开机在哪设置?
  19. 在Chrome浏览器中点击链接,打开IE浏览器,跳转到指定页面并传递参数
  20. Android 系统时间自动更新机制

热门文章

  1. nginx的内存池及内存管理
  2. CABasicAnimation 动画组合
  3. C#编译器选项(目标平台)
  4. 《HeadFirst设计模式》笔记
  5. Golang闭包陷阱
  6. leetcode算法题--环绕字符串中唯一的子字符串★
  7. python 数据库的Connection、Cursor两大对象
  8. systemctl和service
  9. smbus使用 树莓派_树莓派学习笔记——I2C使用 PCF8574 Python SMBUS
  10. 线程和进程 linux,Linux查看进程的所有子进程和线程