【python杂记】网络爬虫-1/2 介绍

文章目录


前言

本文记录下关于python爬虫的学习过程和个人见解。


一、爬虫

爬虫程序不一定非要python写,但是用python写肯定会更容易,python对于爬虫有很多比较友好的框架,框架一般适用于大型网站的爬虫需求,普通的网站随便请求下就行了。

爬虫的目标

将我们需要的数据从网络上爬取下来以供我们使用。

爬虫步骤

网络爬虫应用一般分为两个步骤:

  1. 通过网络连接获取网络内容。可以使用函数库requests
  2. 对获取的网络内容进行处理。可以使用函数库BeautifulSoup4

Robots排除协议

Robots Exclusion Standard,网络爬虫排除标准

  • 作用:
    网站告知网络爬虫哪些页面可以抓取,哪些不行
  • 形式:
    在网站根目录下的robots.txt文件

二、函数库介绍

Python语言提供了很多便于爬虫的函数库,包括urllib、urllib2、urllib3、wget、scrapy、requests、beautifulsoup4等。这些库作用不同、使用方式不同、用户体验不同。下面将详细介绍其中最重要且最主流的两个函数库:requests和beautifulsoup4,它们都是第三方库。

1.requests函数库

requests库是一个简洁且简单的处理HTTP请求的第三方库。它的最大优点是程序编写过程更接近正常URL访问过程

主要用于通过网络连接获取网络内容。

  • 安装:pip3 install requests
  • 导入:import requests

网页请求函数

方法 说明
requests.request() 构造一个请求,支撑以下各个方法的基础方法
requests.get() 获取网页的主要方法,对应HTTP的GET
requests.head() 获取网页头信息的方法,对应HTTP的HEAD
requests.post() 向网页提交POST请求的方法,对应HTTP的POST
requests.put() 向网页提交PUT请求的方法,对应HTTP的PUT
requests.patch() 向网页提交局部修改请求,对应HTTP的PATCH
requests.delete() 向网页提交删除请求,对应HTTP的DELETE

Response对象的属性

属性 说明
r.status_code 请求的返回状态,200表示访问成功,其余表示失败
r.text 响应内容的字符串形式,即url对应的页面内容
r.encoding 从HTTP header中猜测的响应内容编码方式
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
r.content 响应内容的二进制形式

通用代码框架

import requests

def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()  # 若状态不是200,产生 HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "产生异常"

if __name__ == '__main__':
    url = "http://www.baidu.com"
    print(getHTMLText(url))

2. beautifulsoup4函数库

beautifulsoup4库,也称为Beautiful Soup库或bs4 库。是一个解析和处理HTML和XML 的第三方库,用于解析和处理HTML和XML。

使用requests库获取HTML页面并将其转换成字符串后,需要进一步解析HTML页面格式,提取有用信息,这需要处理HTML和XML的函数库

  • 安装:pip3 install beautifulsoup4
  • 导入:from bs4 import BeautifulSoup

BeautifulSoup类

BeautifulSoup对应一个HTML/XML文档的全部内容。

解析内容

bs4库将任何HTML输入都变成utf‐8编码,解析方法如下:
eg: soup = BeautifulSoup('<html>data</html>', 'html.parser')

解析器 使用方法 条件
bs4的HTML解析器 BeautifulSoup(mk, ‘html.parser’) 安装bs4库
lxml的HTML解析器 BeautifulSoup(mk,’lxml’) pip install lxml
lxml的XML解析器 BeautifulSoup(mk,’xml’) pip install lxml
html5lib的解析器 BeautifulSoup(mk,’html5lib’) pip install html5lib

BeautifulSoup类的基本元素

基本元素 说明
Tag 标签,最基本的信息组织单元,分别用<>和</> 表明开头和结尾
Name 标签的名字,<p>…</p>的名字是‘p’,格式:<tag>.name
Attributes 标签的属性,字典形式组织,格式:<tag>.attr
NavigableString 标签内非属性字符串,<>…</>中字符串,格式:<tag>.string
Comment 标签内字符串的注释部分,一种特殊的Comment类型

【python杂记】网络爬虫-1/2 介绍

上一篇:selenium 原理应用 - 利用 requests 模拟 selenium 驱动浏览器


下一篇:SSM技术整合