找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 468|回复: 0

python强大的功能之解析库

[复制链接]

93

主题

6

回帖

113

积分

初中生

热心值
2
IT币
595
贡献值
1
QQ
发表于 2023-6-1 16:45:08 | 显示全部楼层 |阅读模式
于一个刚学Python爬虫的新手来说,学习Python爬虫里面的「解析库的使用,要是记忆能力不强肯定会一边学一边忘记,正所谓好记性不如烂笔头,在自己学些爬虫相关的知识点可以记录下来然后多次实践肯定比单凭记忆力要记得牢,下面就是整理的一些解析库的知识,大家参考学习下。
首先我们要弄明白为什么要学习解析库,我们实现一个最基本的爬虫,提取页面信息时会使用正则表达式。正则表达式虽然提取信息速度很快,但是万一正则表达式有地方写错了,可能导致匹配失败,而且复杂项目的正则表达式很烦琐,这时Python强大的库功能就体现了,我们可以通过快捷高效的方法来解决,那就是——解析库。
什么是解析库?
解析库意思是解析某个特定的内容,一个爬虫的思路非常简单,即向服务器发起请求,得到响应后,根据返回的内容做进一步处理。一般返回的内容是网页的源代码,有时候还会是json数据。针对网页源代码,我们就需要用解析库来解析我们想要的内容。
常用的解析库有3种:
1、lxml
2、Beautiful Soup
3、pyquery
其中Beautiful Soup 是一个 Python 库,可让您轻松地从 HTML 页面中提取数据。它可以使用各种解析器解析 例如,我们可以使用 Beautiful Soup 从京东网站上抓取商品的标题、价格等信息。
首先安装所需的库:BeautifulSoup、requests和fake-useragent。
  1. pip install beautifulsoup4 requests fake-useragent
复制代码
下面是示例demo,大家都知道像京东这样的电商网站反爬机制是非常严的,这里我们只是简单的示例爬虫实现过程,所以只添加了爬虫代理IP这个基础的措施。选择代理的时候建议选择提供优质,高效代理的服务商。
  1. from bs4 import BeautifulSoup
  2. import requests
  3. from fake_useragent import UserAgent

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

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

  9. # 动态转发隧道代理 使用代理IP提高采集成功率
  10. # 亿牛云 爬虫代理加强版 服务器和用户名、密码认证
  11. proxy_username = '16YUN'
  12. proxy_password = '16IP'
  13. proxy_host = 'it帮论坛真好'
  14. proxy_port = '31000'

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

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

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

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

  30. # 打印产品信息
  31. print("标题:", title)
  32. print("价格:", price)
  33. print("描述:", description)
复制代码

[backcolor=var(--yq-bg-primary)]








ITbang.Net是一个IT教程分享社区!

寻找论坛资源请善用论坛搜索功能,这样会为你节约不少学习时间;

论坛资源如有过期链接失效等,请到教程反馈区发帖反馈,我们会为您良好的行为点赞加分!

回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
IT帮论坛所发布的一切视频资源、工具软件和网络技术相关的文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该资源,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:Service@ITbang.Net

QQ|Archiver|手机版|小黑屋|IT帮社区 ( 冀ICP备19002104号-2 )

GMT+8, 2025-5-4 02:19 , Processed in 0.090050 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表