Python网络爬虫(上)

Python网络爬虫(上)

概述

预备知识

1、如何处理包含大量 JavaScript(JS)的页面以及如何处理登录问题

2、screen scraping(网页抓屏)、data mining(数据挖掘)、web harvesting(网页收割)、网页抓取、web crawler(网络爬虫)、bot(网络机器人)

3、网页爬虫的优点:一、同时处理几千甚至几百万个网页;二、区别于传统搜索引擎,可以获取更加准确的数据信息;三、与 API 获取数据相比,网页爬虫灵活性更强

4、网页爬虫运用于:市场预测、机器语言翻译、医疗诊断领域、新闻网站、文章、健康论坛、宏观经济、生物基因、国际关系、健康论坛、艺术领域等方面数据获取和分析(分类和聚合)

5、网页爬虫涉及:数据库、网络服务器、HTTP协议、HTML语言(超文本标记语言 Hyper Text Markup Language)、网络安全、图像处理、数据科学等反面知识

6、网页的组成:HTML文本格式层、CSS样式层(Cascading Style Sheets)、JavaScript 执行层、图像渲染层

7、JavaScript思路:(1)借鉴C语言的基本语法、(2)借鉴Java语言的数据类型和内存管理、(3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位、(4)借鉴Self语言,使用基于原型(prototype)的继承机制。JavaScript组成:(1)核心(ECMAScript), 描述了该语言的语法和基本对象、(2)文档对象模型(DOM),描述处理网页内容的方法和接口、(3)浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口。JavaScript程序库:jQuery、Prototype、MooTools等

8、HTML文本结构:HTML的结构是一个树状结构,在内存中形成一棵树

9、HTML只负责文档的结构和内容,表现形式完全交给CSS,CSS基本语法:选择器 { 属性:值; 属性:值; 属性:值;}(tagAttributes)

10、浏览器加载的网页需要加载许多相关的资源文件,包括:图像文件、JavaScript文件、CSS文件、链接其他网页的URL地址信息等

11、浏览器加载服务器资源,根据标签如<img src=‘cutkitten.jpg‘>,会创建数据包,命令操作系统向服务器发送请求,然后把获取的数据解释成图像。浏览器就是代码,而代码可以分解成许多基本组件,可以重写、重用以及根据需求进行修改

12、.get_text():清除HTML文档中所有的tagName、超链接、段落等无用的信息。通常在准备打印、存储、操作最终数据时,使用.get_text()!

开发工具及原理分析

1、urllib标准库、urllib.request import urlopen

1.1、urllib标准库的功能:网页请求数据、处理cookie、改变请求头和用户代理这些元数据的函数

1.2、urlopen函数功能:打开并读取从网络获取的远程对象,可以读取HTML文件、图像文件、以及其他任何文件流

2、BeautifulSoup库

2.1、XML是可扩展标记语言,HTML 是超文本标记语言:XML 语法比较严谨而 HTML 语法比较松散;XML 主要用于数据格式化存储而 HTML 主要用于网页的编辑;XML 语言是对超文本标记语言的补充;为不同的目的而设计,XML 被设计用来传输和存储数据,其焦点是数据的内容,HTML 被设计用来显示数据,其焦点是数据的外观

2.2、BeautifulSoup库 通过定位 HTML 标签来格式化和组织复杂的网页信息;通过简单易用的 python 对象展示 XML 结构信息

2.3、BeautifulSoup库创建 BeautifulSoup对象:bs=BeautifulSoup( html.read(),‘html.parser’),bs.HTML 标签(html.title、html.body.h1、html.body.div)

  第一个参数:BeautifulSoup对象基于的HTML文本

  第二个参数:BeautifulSoup对象创建该对象的解释器,‘html.parser‘、‘lxml‘、‘html5lib‘

  1、‘lxml‘、‘html5lib‘优点:具容错性,如果HTML 标签(tagName)有异常:未闭合、未正确嵌套、缺失head标签、缺失body标签,‘lxml‘、‘html5lib‘可以进行一定的优化

  2、‘html.parser‘、‘lxml‘、‘html5lib‘三种解释器的网页抓取速度也不一样,‘lxml‘>‘html.parser‘>‘html5lib‘,但是关键问题和瓶颈是宽带速度而不是抓取速度!

2.4、网页爬虫异常,由于网页数据格式异常,网页爬虫出现异常的情况:一、urlopen()出现问题;二、print(bs.h1)出现问题

  一、urlopen()出现问题:

  1、网页在服务器不存在:HTTPError:‘404 PageNot Found‘、‘505 Internet Server Error‘

  2、服务器不存在:URLError

  二、print(bs.h1)出现问题:

  1、BeautifulSoup对象标签异常,不存在None--->AttributeError!由于BeautifulSoup对象调用标签如果不存在,就会return None。如果再调用 None 下面的子标签,就会出现 AttributeError,所以需要避免两种情形的异常情况!

  处理异常的思路:try...except...else...增加异常检查点。

from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup

def getTitle(url):
    try:
        html = urlopen(url)
    except HTTPError as e:
        return None
    try:
        bsObj = BeautifulSoup(html.read(), "lxml")
        title = bsObj.body.h1
    except AttributeError as e:
        return None
    return title

title = getTitle("http://www.pythonscraping.com/pages/page1.html")
if title == None:
    print("Title could not be found")
else:
    print(title)

3、HTML解析:BeautifulSoup、正则表达式

3.1、网页爬虫代码加强灵活性和阅读性的思路:

  1、方向一、网页PC版APP版比较,对比PC版的HTML样式和APP版的HTML样式。选择适用性更强的版本,修改请求头状态,获取对应版本的状态。

  2、方向二、JavaScript文件,通过网页加载的JavaScript文件里面包含的信息

  3、方向三、URL链接中包含网页标题,直接从URL链接中获取目标信息

  4、方向四、目标信息的源网页

3.2、BeautifulSoup运用:CSS语法中属性值查找标签、标签组、导航树(BeautifulSoup标签树导航)

  1、bs.tagName

  2、bs.find_all(tagName,tagAttributes )

3、编写网络爬虫:scrapy

4、存储目标信息:MySQL

运用实例

原文地址:https://www.cnblogs.com/yinminbo/p/11992200.html

时间: 2024-10-17 14:47:28

Python网络爬虫(上)的相关文章

如何利用Python网络爬虫抓取微信朋友圈的动态(上)

今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌,小编在网上找到了第三方工具,它可以将朋友圈进行导出,之后便可以像我们正常爬虫网页一样进行抓取信息了. [出书啦]就提供了这样一种服务,支持朋友圈导出,并排版生成微信书.本文的主要参考资料来源于这篇博文:https://www.cnblogs.com/sheng-jie/p/7776495.html

Python网络爬虫

http://blog.csdn.net/pi9nc/article/details/9734437 一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛.网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址, 然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止. 如果把整个互联网当成一个网站,那么

python网络爬虫之cookie的使用方法汇总

在编写python网络爬虫时,除了要考虑到爬虫的异常处理问题,我们是否还会考虑到cookie的使用呢?在使用cookie时,有想过为什么要使用cookie吗?一起来看看吧. Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密)比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了. 在此之前呢,我们必须先介绍一个open

Python网络爬虫与信息提取(中国大学mooc)

目录 目录 Python网络爬虫与信息提取 淘宝商品比价定向爬虫 目标获取淘宝搜索页面的信息 理解淘宝的搜索接口翻页的处理 技术路线requests-refootnote 代码如下 股票数据定向爬虫 列表内容 爬取网站原则 代码如下 代码优化 Python网络爬虫与信息提取 淘宝商品比价定向爬虫 股票数据定向爬虫 1. 淘宝商品比价定向爬虫 功能描述 目标:获取淘宝搜索页面的信息 理解:淘宝的搜索接口翻页的处理 技术路线:requests-re[^footnote]. 代码如下: #CrowTa

[Python]网络爬虫(三):异常的处理和HTTP状态码的分类(转)

先来说一说HTTP的异常处理问题.当urlopen不能够处理一个response时,产生urlError.不过通常的Python APIs异常如ValueError,TypeError等也会同时产生.HTTPError是urlError的子类,通常在特定HTTP URLs中产生. 1.URLError通常,URLError在没有网络连接(没有路由到特定服务器),或者服务器不存在的情况下产生. 这种情况下,异常同样会带有"reason"属性,它是一个tuple(可以理解为不可变的数组),

Python]网络爬虫

Originated From: http://blog.csdn.net/pi9nc/article/details/9734437#comments [Python]网络爬虫(一):抓取网页的含义和URL基本构成 一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛.网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址, 然后通过这些

Python网络爬虫:空姐网、糗百、xxx结果图与源码

如前面所述,我们上手写了空姐网爬虫,糗百爬虫,先放一下传送门: Python网络爬虫requests.bs4爬取空姐网图片Python爬虫框架Scrapy之爬取糗事百科大量段子数据Python爬虫框架Scrapy架构和爬取糗事百科段子结果 还有Python爬虫框架Scrapy解密的文章:zzdaiy2019.cn Python爬虫框架之Scrapy详解 这几篇文章都是即时编写代码并且发布文章的,代码百分百能运行起来. 接下来,我们看一下这几个爬虫运行的结果与源码. 结果: 糗百段子数据结果 糗百

Python网络爬虫基础知识学习

对Python有一些简单了解的朋友都知识Python编程语言有个很强大的功能,那就是Python网络爬虫(http://www.maiziedu.com/course/python/645-9570/),一提到Python,就会想到相关的Python爬虫和scrapy等等,今天就来简单认识学习Python爬虫的基础知识,有了一定的相关爬虫知识,以后学习scrapy.urllib等等知识时,会相对轻松些. 爬虫: 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组

python网络爬虫学习笔记

python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章目录 1. 介绍: 2. 从简单语句中开始: 3. 传送数据给服务器 4. HTTP头-描述数据的数据 5. 异常 5.0.1. URLError 5.0.2. HTTPError 5.0.3. 处理异常 5.0.4. info和geturl 6. Opener和Handler 7. Basic Authentication 8. 代理 9. Timeout 设置 10. Cookie 11. Deb