什么是爬虫

爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。

Python爬虫架构

Python 爬虫架构主要由五个部分组成,分别是调度器、URL管理器、网页下载器、网页解析器、应用程序(爬取的有价值数据)。调度器:相当于一台电脑的CPU,主要负责调度URL管理器、下载器、解析器之间的协调工作。

URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重复抓取URL和循环抓取URL,实现URL管理器主要用三种方式,通过内存、数据库、缓存数据库来实现。

网页下载器:通过传入一个URL地址来下载网页,将网页转换成一个字符串,网页下载器有urllib2(Python官方基础模块)包括需要登录、代理、和cookie,requests(第三方包)

网页解析器:将一个网页字符串进行解析,可以按照我们的要求来提取出我们有用的信息,也可以根据DOM树的解析方式来解析。网页解析器有正则表达式(直观,将网页转成字符串通过模糊匹配的方式来提取有价值的信息,当文档比较复杂的时候,该方法提取数据的时候就会非常的困难)、html.parser(Python自带的)、beautifulsoup(第三方插件,可以使用Python自带的html.parser进行解析,也可以使用lxml进行解析,相对于其他几种来说要强大一些)、lxml(第三方插件,可以解析 xml 和 HTML),html.parser 和 beautifulsoup 以及 lxml 都是以 DOM 树的方式进行解析的。

应用程序:就是从网页中提取的有用数据组成的一个应用。

使用urllib2 实现下载网页的方式#!/usr/bin/python

# -*- coding: UTF-8 -*-

import cookielib

import urllib2

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

response1 = urllib2.urlopen(url)

print "第一种方法"

#获取状态码,200表示成功

print response1.getcode()

#获取网页内容的长度

print len(response1.read())

print "第二种方法"

request = urllib2.Request(url)

#模拟Mozilla浏览器进行爬虫

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

response2 = urllib2.urlopen(request)

print response2.getcode()

print len(response2.read())

print "第三种方法"

cookie = cookielib.CookieJar()

#加入urllib2处理cookie的能力

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

urllib2.install_opener(opener)

response3 = urllib2.urlopen(url)

print response3.getcode()

print len(response3.read())

print cookie

使用 Beautiful Soup 解析 html 文件#!/usr/bin/python

# -*- coding: UTF-8 -*-

import re

from bs4 import BeautifulSoup

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.

...

"""

#创建一个BeautifulSoup解析对象

soup = BeautifulSoup(html_doc,"html.parser",from_encoding="utf-8")

#获取所有的链接

links = soup.find_all('a')

print "所有的链接"

for link in links:

print link.name,link['href'],link.get_text()

print "获取特定的URL地址"

link_node = soup.find('a',href="http://example.com/elsie")

print link_node.name,link_node['href'],link_node['class'],link_node.get_text()

print "正则表达式匹配"

link_node = soup.find('a',href=re.compile(r"ti"))

print link_node.name,link_node['href'],link_node['class'],link_node.get_text()

print "获取P段落的文字"

p_node = soup.find('p',class_='story')

print p_node.name,p_node['class'],p_node.get_text()shsh

python是不是挺厉害的呢

python爬虫从网页下载文件_用 Python爬虫下载网页文件教程-ie缓存文件提取器相关推荐

  1. HTML5汽车网页设计成品_学生DW汽车静态网页设计代做_web课程设计网页制作_宽屏大气汽车自驾游网站模板html源码...

    HTML5汽车网页设计成品_学生DW汽车静态网页设计代做_web课程设计网页制作_宽屏大气汽车自驾游网站模板html源码 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML ...

  2. HTML5汽车网页设计成品_学生DW汽车静态网页设计代做_web课程设计网页制作_宽屏大气汽车自驾游网站模板html源码

    HTML5汽车网页设计成品_学生DW汽车静态网页设计代做_web课程设计网页制作_宽屏大气汽车自驾游网站模板html源码 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML ...

  3. python下载网页上的文件_用Python下载一个网页保存为本地的HTML文件实例

    Python打开网页并另存为静态html怎么实现 如何用python把网页上的文本内容保存下来那一世的长情,谱一首长相思,冷了多少凄凉,漫了多少青丝,化作多少烟雨,吹散多少世间情!徒悲,奈何,这一世, ...

  4. python下载网页中的pdf文件_【Python】Python的urllib模块、urllib2模块批量进行网页下载文件...

    由于需要从某个网页上下载一些PDF文件,但是需要下载的PDF文件有几百个,所以不可能用人工点击来下载.正好Python有相关的模块,所以写了个程序来进行PDF文件的下载,顺便熟悉了Python的url ...

  5. 爬虫python下载视频_用python做爬虫下载视频

    用python有一段时间了,对python是十二分喜爱,在我看来python是个好工具,可以轻松简洁的帮我完成一些我想要完成的工作.下面和大家分享一下我用python爬取某网站视频的案例.用pytho ...

  6. python request 等待网页加载_用Python开发爬虫,看这篇文章就够了

    现在Python语言大火,在网络爬虫.人工智能.大数据等领域都有很好的应用.今天我向大家介绍一下Python爬虫的一些知识和常用类库的用法,希望能对大家有所帮助. 其实爬虫这个概念很简单,基本可以分成 ...

  7. mysql 数据为空 none 网页显示空白_用python爬虫爬取股票数据

    前言: 编写一个爬虫脚本,用于爬取东方财富网的上海股票代码,并通过爬取百度股票的单个股票数据,将所有上海股票数据爬取下来并保存到本地文件中 系统环境: 64位win10系统,64位python3.6, ...

  8. 用python处理excel文件_用python 读写excel文件(附资料下载)

    对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等工具包.利用这些工具,可以方便的对excel 进行操作. 1. 下载 xlutils ...

  9. 使用python下载文件_利用python web框架做文件流下载

    把时序数据库中的日志下载到本地. 大家都知道. 数据库里的数据 都是存在数据库里的(废话). 想把他下载到客户的本地. 有的同学第一反应是: 只有文件才能下载. 所以大多数同学会想到先把数据从数据库中 ...

  10. python根据url下载数据_利用Python如何实现根据URL地址下载并保存文件至对应目录...

    利用Python如何实现根据URL地址下载并保存文件至对应目录 发布时间:2020-11-16 14:23:11 来源:亿速云 阅读:58 作者:Leah 这篇文章将为大家详细讲解有关利用Python ...

最新文章

  1. python 线程类 threading.Thread.join() 方法 (自闭,不让别人进来了)
  2. 信安精品课:2020年软考信息安全工程师备考公开课
  3. android activity焦点,android启动activity文本框不获得焦点
  4. Hadoop初步简介
  5. 服務端的EIT造形+Socket代碼
  6. CodeVs天梯白银Silver题解
  7. git 推送出现 fatal: The remote end hung up unexpectedly 解决方案
  8. c/c++文件操作之缓冲区
  9. eclipse安装程序无法启动
  10. python读取文件的时候去重_对python读写文件去重、RE、set的使用详解
  11. 联想服务器安装GHO系统,联想win7旗舰版32位gho安装教程
  12. 密码学(五):数字签名和证书
  13. 程序人生 - 创可贴使用不当或致截肢
  14. android好用拍照框架,Github挺好用的android图片选择框架(拍照+从相册)
  15. Qt常见make编译错误:/usr/bin/ld:cannot find -lxxx
  16. matlab中保存imagesc呈现的图像内容以及保存图像大小设置
  17. android ContentValues类
  18. scrapy常用设置参考手册 1
  19. 物联网平台 ThingsBoard 3.3 发布
  20. excel打开2个独立窗口_500个红包丨第2张专辑“基金入门指南”来了,打开投资新世界...

热门文章

  1. country-converter官方文档----机翻人工确认
  2. 网络通信词汇——MCC、MNC、dbm、TAC、ECI、PCI、BAND、EARFCN、FREQ、RSSI、RSRP、RSRQ、SINR
  3. 智慧树工业机器人测试答案_智慧树_工业机器人技术基础_答案章节单元测试答案...
  4. python库手册_Python 中文开发手册
  5. 支持firefox 3.6的onenote插件
  6. 飞天诚信ROCKEY-ARM(标准锁)软件加密狗使用记录
  7. 2021-10-20
  8. 软件工程师笔试编程题
  9. unity3D人物模型
  10. Python基于Snap7与PLC建立连接并读写数据