Chinaunix首页 | 论坛 | 博客
  • 博客访问: 188212
  • 博文数量: 86
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 876
  • 用 户 组: 普通用户
  • 注册时间: 2018-03-27 14:41
个人简介

宁为玉碎,不为瓦全

文章分类
文章存档

2024年(30)

2023年(28)

2022年(17)

2021年(10)

2019年(1)

我的朋友

分类: Python/Ruby

2023-06-01 16:34:04

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

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

什么是解析库?

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

常用的解析库有3种:

1、lxml

2、Beautiful Soup

3、pyquery

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

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

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


# 定义爬取的京东产品页面的URL
url = ""


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


# 动态转发隧道代理 使用代理IP提高采集成功率
# 亿牛云 爬虫代理加强版 服务器和用户名、密码认证
proxy_username = '16YUN'
proxy_password = '16IP'
proxy_host = ''
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)



阅读(277) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~