首页 > 编程语言 >Python爬虫详解

Python爬虫详解

时间:2023-02-04 23:44:41浏览次数:35  
标签:xpath Python 标签 resp 爬虫 content url 详解 page

初识爬虫

爬虫的概念

什么是爬虫

爬虫:通过编写程序,模拟浏览器上网,并抓取有价值的数据的过程

反爬虫:门户网站通过制定相应的策略或技术手段,来阻止爬虫程序对其网站数据的爬取

反反爬:爬虫程序可以采用一些技术手段,来绕过或破坏门户网站的反爬机制,从而爬取到有用的数据

爬虫与反爬虫就是一对矛与盾

爬虫合法性探究

爬虫可能带来的风险?

  • 爬虫干扰了被访问网站的正常运营
  • 爬虫抓取了受到法律保护的特定类型的数据或信息

如何合理地使用爬虫?

  • 对爬虫程序进行优化,避免干扰网站的正常运行
  • 不要爬取涉及商业机密等敏感信息

爬虫的君子协议

通常,网站的robots.txt文件中声明了那些数据可以被爬取,那些数据不可以被爬取(非强制性)

20230113122447

爬虫的分类

在不同的使用场景下,爬虫的分类有

  1. 通用爬虫:抓取一整张页面的数据(很可能包含大量无用信息)

  2. 聚焦爬虫:抓取页面中特定的局部内容,必须建立在通用爬虫的基础之上

  3. 增量爬虫:只会爬取网站中最新更新的数据

网络请求与响应

http协议

http(s)协议是服务器和客户端进行数据交互的一种形式,服务器和客户端都需要遵守该协议才能进行数据交互

https协议是http协议的升级版,服务器与客户端的数据交互是通过证书加密的,攻击者很难获得有价值的信息

常用的请求头信息

Request Header 描述
User-Agent 请求载体的身份标识
Connection 请求完毕后,保持连接还是断开连接

常用的响应头信息

Response Header 描述
Content-Type 服务器响应数据的类型

requests模块

requests是python中的一个基于网络请求的模块,用来模拟浏览器发送请求。

requests模块的安装与使用

pip install requests
import requests

url = 'http://www.baidu.com'
resp = requests.get(url)    #发起一个get请求,并获得响应数据
page_content = resp.text
print(page_content)
属性 描述
resp.text 以字符串形式返回,通常是页面的html源代码
resp.content 以二进制形式返回,比如一张图片、一个音频
resp.json() 返回一个字典对象(当响应数据是json类型时使用)

基于requests的简易网页采集器(使用到了UA伪装)

import requests

# 1. 准备数据
# url = 'https://www.sogou.com/web?query=猫羽雫'
url = 'https://www.sogou.com/web'
word = input('Enter a word:')
params = {  #请求参数,拼接在url后
    'query': word
}
headers = { #请求头,伪装成浏览器
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}

# 2. 发起请求
resp = requests.get(url,params,headers=headers)
resp.encoding = resp.apparent_encoding
page_content = resp.text
print(page_content)

# 3. 持久化存储
file_name = word + '.html'
with open(file_name,'w',encoding='utf-8') as fp:
    fp.write(page_content)
print(file_name,'保存成功!')

数据解析

数据解析是在得到整个网页源代码后,对其中的有用信息进行提取的过程。属于聚焦爬虫

数据解析的一般步骤

检查网页源代码发现,有价值的数据一般存放在标签中,或者标签的属性中。所以数据解析的一般步骤是:1.获取网页源代码 2.标签定位 3.解析数据

F12检查元素中的数据不一定在页面源代码中,也有可能是通过ajax动态刷新的数据,这是我们在数据解析时需要注意的。数据解析要以页面源代码为准!

Python中数据解析的三种方式

1.正则表达式(通用) 2.BeautifulSoup4(python独有) 3.xpath(推荐,通用性最强)

使用正则表达式

建议先把要提取的那部分源码单独复制,对照着去写正则表达式(F12太乱了

标签:xpath,Python,标签,resp,爬虫,content,url,详解,page
From: https://www.cnblogs.com/wyun521/p/17092648.html

相关文章