网络爬虫及其应用

443次阅读
没有评论
网络爬虫及其应用

网络爬虫及其应用

步骤:

(1)通过网络连接获取网页内容

(2)对获得的网页内容进行处理

注:可能需要增加伪装

这两个步骤分别使用不同的函数库:

requestsbeautifulsoup4
获取网页内容 处理数据

request库的使用

函数:

get(url[,timeout=n])

  • timeout=n 参数,设定每次请求超时时间为n秒

  • 获取网页最常用的方法,在调用requests.get()函数后返回一个Response对象

  • Response的属性:

    属性描述
    status_code 200连接成功,404表示失败
    text url对应的页面内容
    encoding 响应内容的编码方式
    content 响应内容的二进制形式

案例:爬取百度首页的内容

#通过爬取百度首页熟悉相关函数的使用和Response对象的属性 import requests url='https://www.baidu.com/' r=requests.get(url,timeout=30) #属性:status_code print("连接状态:",r.status_code) #属性:text print("网页内容:",r.text) #可以看出没有输出中文内容,要对编码格式进行更改 #属性:encoding r.encoding='UTF-8' print("更改完后编码方式的网页内容:",r.text)

改进:

import requests def getHTMLText(url): try: r=requests.get(url,timeout=30) r.raise_for_status() #如果状态不是200,引发异常 r.encoding="UTF-8" #无论原来采用什么编码,都改成UTF-8 return r.text except : return "出错"

url="https://www.baidu.com/" print(getHTMLText(url))

beasutifulsoup4 库的使用

如何从网页内容中获取你所需要的内容?

通过beautifulsoup4库对网页中的内容进行分割

常见引用方式:

from bs4 import BeautifulSoup

使用方式:

url="https://www.baidu.com/" text=getHTMLText(url) #返回的是字符串类 soup=BeautifulSoup(text,'html.parser')

  • 创键的Beautifulsoup对象是一个树形结构,它包含HTML页面里的每一个Tag元素。

  • 每个标签对应四个属性:name attrs contents string

属性描述
name 字符串,标签的名字,比如div
attrs 字典,包含了原来页面Tag所有的属性,比如href
contents 列表,这个Tag下所有子Tag的内容
string 字符串,Tag所包围的文本,网页中真实的文字
  • 下面是一个标签结构实例:

新闻

  • 在网页上’<C-F>进行搜索<a>查看标签情况

  • Beautiful.find_all()依据参数找到对应的标签,返回标签列表,可以通过限定缩小范围,所给的参数越多返回的结果越精确

实例:查找百度网页所有a标签的内容

text=getHTMLText(url) #返回的是字符串类 soup=BeautifulSoup(text,'html.parser') find_a=soup.find_all('a') print(find_a)

结果:

E:pythonProject>python E:pythonproject爬取百度首页3.py
[新闻, hao123, 地图, 视频, 贴吧, 登录, 更多产品, 关于百度, About Baidu, 使用百度前必读, 意见反馈]

可以通过加字典的方式进一步缩小范围:

find_a1=soup.find_all('a',{'class':"bri"}) #对查找内容进行限定 print(find_a1)

结果:

E:pythonProject>python E:pythonproject爬取百度首页3.py
[更多产品]

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-24发表,共计1717字。
新手QQ群:570568346,欢迎进群讨论 Python51学习