python强大的功能之解析库

2023-06-01 16:22:58 浏览数 (2)

于一个刚学Python爬虫的新手来说,学习Python爬虫里面的「解析库的使用,要是记忆能力不强肯定会一边学一边忘记,正所谓好记性不如烂笔头,在自己学些爬虫相关的知识点可以记录下来然后多次实践肯定比单凭记忆力要记得牢,下面就是整理的一些解析库的知识,大家参考学习下。

首先我们要弄明白为什么要学习解析库,我们实现一个最基本的爬虫,提取页面信息时会使用正则表达式。正则表达式虽然提取信息速度很快,但是万一正则表达式有地方写错了,可能导致匹配失败,而且复杂项目的正则表达式很烦琐,这时Python强大的库功能就体现了,我们可以通过快捷高效的方法来解决,那就是——解析库。

什么是解析库?

解析库意思是解析某个特定的内容,一个爬虫的思路非常简单,即向服务器发起请求,得到响应后,根据返回的内容做进一步处理。一般返回的内容是网页的源代码,有时候还会是json数据。针对网页源代码,我们就需要用解析库来解析我们想要的内容。

常用的解析库有3种:

1、lxml

2、Beautiful Soup

3、pyquery

其中Beautiful Soup 是一个 Python 库,可让您轻松地从 HTML 页面中提取数据。它可以使用各种解析器解析 例如,我们可以使用 Beautiful Soup 从京东网站上抓取商品的标题、价格等信息。

首先安装所需的库:BeautifulSoup、requests和fake-useragent。

代码语言:javascript复制
pip install beautifulsoup4 requests fake-useragent

下面是示例demo,大家都知道像京东这样的电商网站反爬机制是非常严的,这里我们只是简单的示例爬虫实现过程,所以只添加了爬虫代理IP这个基础的措施。选择代理的时候建议选择提供优质,高效代理的服务商。

代码语言:javascript复制
from bs4 import BeautifulSoup
import requests
from fake_useragent import UserAgent

# 定义爬取的京东产品页面的URL
url = "https://passport.jd.com/"

# 设置随机UA
ua = UserAgent()
headers = {'User-Agent': ua.random}

# 动态转发隧道代理 使用代理IP提高采集成功率
# 亿牛云 爬虫代理加强版 服务器和用户名、密码认证
proxy_username = '16YUN'
proxy_password = '16IP'
proxy_host = 'www.16yun.cn'
proxy_port = '31000'

# 构造代理IP的格式
proxies = {
    'http': f'http://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}',
    'https': f'https://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}'
}

# 发送请求并使用代理IP
response = requests.get(url, headers=headers, proxies=proxies)
soup = BeautifulSoup(response.content, 'html.parser')

# 提取产品信息
title_element = soup.find('span', id='productTitle')
price_element = soup.find('span', class_='price')
description_element = soup.find('div', id='productDescription')

title = title_element.text.strip()
price = price_element.text.strip()
description = description_element.text.strip()

# 打印产品信息
print("标题:", title)
print("价格:", price)
print("描述:", description)

0 人点赞