python简单爬虫程序分析_[Python专题学习]-python开发简单爬虫
掌握开发轻量级爬虫,这里的案例是不需要登录的静态网页抓取。涉及爬虫简介、简单爬虫架构、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开发简单爬虫相关推荐
- python后端学什么框架_献给正在学习python的你, 10个最受欢迎的Python开源框架
很多小伙伴在学习wen的时候说,有没有几个常用的框架,好多小伙伴都只说对了其中几个,只有少部分是说正确的,想要了解更多,欢迎大家订阅微信公众号:Python从程序猿到程序员,或者加4913.08659 ...
- python中continue用法案例_记录今天学习python中for与while循环针对break和continue的用法...
python中有两个主要的循环for与while,其中针对这两个循环有两种不同的中断用法break与continue. 首先先看下面的循环代码: 1: for i in range(10):#变量i带 ...
- python零基础书推荐_零基础学习Python(Python初学者、Python入门)常见问题:资料、社区、书籍推荐...
Python web开发 QQ学习群:338985564 ,欢迎各位加入,一起学习. 本文针对零基础的,想学习Python者.本文会不定时更新. 一.学会使用搜索引擎,尤其是Google. 推荐阅读文 ...
- python自学看不懂怎么办_零基础学习python但是基础教程一看到后面就开始看不懂了,怎么办?...
廖大的教程看不懂不要担心,简明教程也看不下去也不要怕,世界上总有人基础比你好的,不过我们可以用笨办法来学习python. 0,先找一个python3版本的<笨办法学python>,从头看, ...
- python for loop循环程序语句_零基础学习 Python 之 for 循环语句
写在之前 大家好,这里是零基础学习 Python 系列,在这里我将从最基本的Python 写起,然后再慢慢涉及到高阶以及具体应用方面.我是完全自学的 Python,所以很是明白自学对于一个人的考验,所 ...
- python编写一个简单的程序验证码_针对验证码,做一个简单的自动网上签到程序(一)...
现在签到改成网络签到,比较麻烦,总是需要登陆再签,所以想着做个自动登录并签到的东西,看了看,其他的问题都不大,登录的东西很简单,就是post下就可以了. 查了查,主要问题在验证码部分,看了看,有几种途 ...
- python是高级程序语言_高级语言程序设计(Python)_中国大学MOOC(慕课)
课程概述 "高级语言程序设计"类课程面向无编程基础的学生,培养其运用编程语言解决实际问题的编程能力,使学生掌握一门编程语言的基本语法.语句.控制结构以及结构化程序设计的基本思想和方 ...
- python从爬虫到数据分析项目_零基础学习Python web开发、Python爬虫、Python数据分析,从基础到项目实战!...
随着大数据和人工智能的发展,目前Python语言的上升趋势比较明显,而且由于Python语言简单易学,所以不少初学者往往也会选择Python作为入门语言. Python语言目前是IT行业内应用最为广泛 ...
- python基于水色图像的水质评价_零基础学习Python的学习路线及教程
什么是Python? 在过去的2017年里,Python开发者在全球快速增长,国内小伙伴学习 Python 的热情一路高涨.同时,PYPL发布7月编程语言指数榜,Python 在今年5月首次超越 Ja ...
最新文章
- 一种可以避免数据迁移的分库分表scale-out扩容方式
- 介绍两个Eclipse插件: Implementors Call Hierarchy
- [ARM-assembly]-A64的load/store指令总结
- 设计模式:各个模式间的对比
- shell 判断字符串是否存在包含关系
- 53. 最大子序和 golang (动态规划与贪心算法)
- 基础知识(十)C++常用函数.txt
- java 蓝桥杯算法训练 未名湖边的烦恼
- 算法 - 反转字符串
- java模拟内存溢出并分析_模拟内存溢出通过MAT分析
- vuejs+webpack环境搭建
- HDD + HDD(SSD) 多硬盘系统启动问题
- 标准软件开发过程 文档
- web前端 html+css+javascript网页设计实例 企业网站制作
- 最新dex2jar下载,网上很多dex2jar是2015年的,有bug无法翻译部分代码,最新更新的dex2jar下载
- 2020年终系列:国内区块链专利授权总数不足3000项|链塔智库
- java登录清除cookies_退出登录方法,清除相关的cookies和session
- macOS 13 Ventura系统自动开机在哪设置?
- 在Chrome浏览器中点击链接,打开IE浏览器,跳转到指定页面并传递参数
- Android 系统时间自动更新机制