使用python网络爬虫入门讲解(上)

 一、网络爬虫介绍

网络爬虫通俗讲是使用代码将HTML网页的内容下载到本地的过程。爬取网页是为了获取网页中的关键信息。如:网页中的数据、图片、视频等。python语言中提供了多个具有爬虫功能的库,下面将具体介绍。

urllib库:python自带标准库无需下载、安装即可直接使用。包含大量爬虫功能,但代码编写略显复杂。

reques库:是python第三方库,需要下载、安装后才能使用。在urllib的基础上建立,使用起来更加简洁、方便

scrapy库:是python的第三方库,需要下载、安装之后才能使用。适用于专业应用程序开发的网络爬虫库。

selenium库:是python的第三方库,需要下载、安装之后才能使用。selnium库可用于驱动计算机中的浏览器执行相关命令,无需用户动手操作。

robots.txt规则 

  1. 文件位置
    必须放在站点根目录,文件名固定为小写 robots.txt。
    例:https://example.com/robots.txt

  2. 文件格式
    纯 UTF-8 文本,每行一条指令,Unix 换行符(LF)。大小写敏感。

  3. 指令详解

    3.1 User-agent
    指定本条规则作用于哪个爬虫。
    语法:User-agent: <爬虫名称>
    • 通配符 * 代表所有爬虫。
    • 名称必须与爬虫在 HTTP User-Agent 头中声明的一致。
    例:
    User-agent: * # 对所有爬虫生效
    User-agent: Googlebot # 仅对 Google 生效

    3.2 Disallow
    声明禁止抓取的路径前缀。
    语法:Disallow: <路径>
    • 以 / 开头,表示站点根目录后的相对路径。
    • 空值(Disallow:)表示允许抓取全部内容。
    • 支持 *(任意字符)与 (行尾)通配符,但并非所有爬虫支持。 例: Disallow: /private/ # 禁止抓取 /private/ 目录及其子目录 Disallow: /*.pdf # 禁止抓取所有以 .pdf 结尾的 URL

    3.3 Allow(可选)
    在 Disallow 范围内再次放行某一路径。
    语法:Allow: <路径>
    例:
    Disallow: /images/
    Allow: /images/public/ # 仅 Google、Bing 等支持 Allow 的爬虫生效

    3.4 Sitemap(可选)
    提示站点地图位置,可多条。
    语法:Sitemap: <绝对 URL>

 二、使用requests库爬取

1.安装requests库

使用pip下载(使用镜像源下载会更快)

pip install requests -i Simple Index

2.访问网页源代码 

打开网页后点击鼠标右键后点击访问源代码。

 

点击窗口中的元素选择按钮 

 

 点击需要选择的部分右侧就会对应其源代码

3. 获取网页资源

get()函数:

get(url,params=None,**kwargs)

参数url:表示需要获取的HTML网址(也称url)

参数params:表示可选参数,

参数**kwargs:表示请求采用的可选参数

返回值:返回一个由类response创建的对象。

示例代码:

import requests
r = requests.get('https://www.ptpress.com.cn/')
print(r.text)

 

get()搜索信息:

当在网页中搜索人民邮电出版社中某些指定信息时,可以在网址内输入,等同于在搜索框输入。

使用get()搜素示例代码如下:

import requests
r = requests.get('https://www.ptpress.com.cn/search?keyword=excel')
print(r.text)

get()添加信息:

get()函数中第2个参数params会以字典的心事在url后自动添加信息,需先将params定义为字典。示例代码:

import requests
info = {'keyword':'Excel'}
r = requests.get('https://www.ptpress.com.cn/search',params=info)
print(r.url)
print(r.text)

三、返回response对象

通过get()函数获取HTML网页内容后,由于网页的多样性,通常还需要对网页返回的Response对象进行设置。

1.response属性

Response包含的属性有status_code、headers、url、encoding、cookiesd等

status_code(状态码):当获取一个HTML网页时,网页所在服务器会返回一个状态码,表明本次获取网页的状态。

常见的HTML(Hypertext Transfer Protool,超文本传送协议)状态码有200(请求成功)

301(网页内容被永久转移到其他url)

404(请求的网页不存在)

500(内部服务器错误)

示例代码:


import requests
r = requests.get('https://www.ptpress.com.cn')
print(r.status_code)  #状态码
if r.status_code==200:
    print(r.text)
else:
    print('本次访问失败')
2. 返回网页内容:

response对象中返回网页内容有两种方法,分别是text()方法和content()方法。

text()方法以字符串的形式返回网页内容。

content()方法以二进制方法返回网页内容。

示例代码:

import requests
r = requests.get("https://cdn.ptpress.cn/uploadimg/Material/978-7-115-67491-3/72jpg/67491_s300.jpg",params=info)
f2=open('b.jpg','wb')
f2.write(r.content)
f2.close()

 四、项目案例

使用requests爬取目前网页的所有书名

示例代码:

import requests
import re  #正则表达式
r = requests.get('https://www.ryjiaoyu.com/tag/details/7')
result = re.findall('<a href=(.+?)" title="(.+?)">',r.text)
for i in range(len(result)):
    print(result[i][1])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值