sever2012做网站,wordpress轮播插件,北京怀柔做网站管理运营的公司,科技公司名称大全简单大气目录 前言一、什么是爬虫二、快速编写一个爬虫2.1 爬虫需要用到的库2.2 搭建项目工程2.3 安装三方库2.4 案例编写 三、爬虫实战3.1 目标分析3.2 清洗数据 四、代码改进 前言
本博客旨在分享爬虫技术相关知识#xff0c;仅供学习和研究之用。使用者在阅读本博客的内容时#… 目录 前言一、什么是爬虫二、快速编写一个爬虫2.1 爬虫需要用到的库2.2 搭建项目工程2.3 安装三方库2.4 案例编写 三、爬虫实战3.1 目标分析3.2 清洗数据 四、代码改进 前言
本博客旨在分享爬虫技术相关知识仅供学习和研究之用。使用者在阅读本博客的内容时应自行承担风险并严格遵守当地法律法规。本博客的作者对使用者基于本博客内容所进行的任何行为或活动不承担任何责任。
当涉及到网络数据的获取和处理时爬虫技术无疑是一项强大而又引人注目的工具。作为一种自动化程序爬虫能够模拟人类在互联网上的浏览行为从而获取网页上的信息并进行处理。无论是用于数据分析、信息搜集还是网站内容更新爬虫都扮演着至关重要的角色。
Python作为一种简洁而又功能强大的编程语言非常适合用来编写爬虫程序。其丰富的第三方库和模块如Requests、Beautiful Soup和Scrapy为爬虫开发提供了极大的便利性和灵活性。通过学习Python爬虫基础知识不仅可以深入了解网络数据的获取和处理流程还可以掌握一种强大的工具来解决实际问题。
在这篇博客中我们将探讨Python爬虫的基础入门知识包括如何发送HTTP请求、解析网页内容、处理数据等方面的内容。无论是初学者还是有一定经验的开发者都可以通过这篇博客来快速地学习和掌握Python爬虫的基础知识。 一、什么是爬虫 爬虫Web crawler是一种自动化程序专门用于在互联网上获取信息。爬虫通过模拟人类在网页上的浏览行为访问并抓取网页上的数据。其主要功能是根据指定的规则和算法自动地从互联网上的各种网站、页面中提取信息并将这些信息进行整理、存储或分析。
爬虫通常会按照程序中设定的规则和逻辑自动地访问网页、提取数据、解析内容然后将数据保存到本地数据库或进行进一步处理。爬虫可以用于各种目的包括搜索引擎的网页抓取、数据挖掘、信息监控、内容聚合等。通过爬虫技术人们可以快速、高效地获取互联网上的海量信息从而实现各种应用和服务。
二、快速编写一个爬虫
2.1 爬虫需要用到的库
官方文档
Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档
Beautiful Soup 4.4.0 文档 — Beautiful Soup 4.2.0 中文 文档
lxml/lxml: The lxml XML toolkit for Python (github.com)
**Requests库**是一个功能强大且用户友好的 Python HTTP 库用于发送各种类型的 HTTP 请求。它简化了与 Web 服务进行通信的过程并提供了简洁的 API 以及丰富的功能使得在 Python 中进行网络请求变得更加容易和便捷。
**BeautifulSoup4库**是一个用于解析 HTML 和 XML 文档的 Python 库它提供了简单而灵活的方式来从网页中提取数据。通过使用 Beautiful Soup我们可以方便地遍历文档树、搜索特定标签和提取内容从而实现网页数据的抓取和处理。
lxml库 是一个高性能的 XML 和 HTML 解析库它基于 libxml2和 libxslt库提供了快速而稳定的解析功能。lxml 的设计目标是提供一个简单而强大的 API使得在 Python 中处理 XML 和 HTML 文档变得更加高效和便捷。
2.2 搭建项目工程 此处包管理器我用的poetry其它皆可自行选择
2.3 安装三方库
poetry add beautifulsoup4
poetry add requests
poetry add lxml
poetry add fake-useragent #用于伪装User-AgentUser-Agent 是 HTTP 协议中的一个头部字段用于标识发起 HTTP 请求的客户端信息。通常User-Agent 头部字段包含了客户端的软件类型、操作系统、版本号等信息以便服务器能够根据客户端的特征来做出相应的响应。在进行网络请求时设置适当的 User-Agent 可以帮助我们模拟不同类型的客户端从而获取不同的响应或绕过一些限制。有时候网站可能会根据 User-Agent来识别爬虫程序或自动化请求并做出不同的响应。 检查相关依赖使用pipenv或者Virtualenv的虚拟环境记得检查requirement.txt
2.4 案例编写
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
ua UserAgent().edge
headers {User-Agent: ua
}
resp requests.get(urlhttp://www.baidu.com, headersheaders)
soup BeautifulSoup(resp.text, html.parser)
print(soup.prettify())该爬虫仅向百度发起请求然后传入BeautifulSoup(过后称为bs4)并返回其实例
返回的就是www.baidu.com的网页源码真正的爬虫在请求完成后还要通过bs4解析搜索特定的数据完成数据的清理 三、爬虫实战
爬取本人CSDN个人页相关信息总访问量、原创文章数、排名、粉丝数并将数据存储至本地 3.1 目标分析 所有信息都在这一层级下
3.2 清洗数据
import randomimport requests
from ip_pool import ip_pool
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
from lxml import etreeua UserAgent().edge
# 目标url
url https://blog.csdn.net/m0_50281408?spm1010.2135.3001.5421
# 请求头信息
headers {User-Agent: ua
}
resp requests.get(urlurl, headersheaders)
# 第一次清洗
soup BeautifulSoup(resp.text, lxml)
part soup.find(div, class_user-profile-head-info-r-c)
temp BeautifulSoup(str(part), lxml)
# 第二次清洗
final_num temp.findAll(div, class_user-profile-statistics-num)
final_name temp.findAll(div, class_user-profile-statistics-name)
result {}
for x, y in zip(final_name, final_num):result[str(x.string)] str(y.string)
print(result)四、代码改进
在执行爬虫的过程中有网站会有反爬措施有许多可以绕过的手段比如IP代理池本文便使用到了IP代理池技术扫码可以免费试用一段时间这个还是非常好用配置也非常简单 import requestsAPI (试用它提供的API接口)
proxyusernm **** # 代理帐号
proxypasswd **** # 代理密码def get_ip_pool(api: str) - list:pool: dict[str] dict(requests.get(api).json())final_ip_pool: list[str] []for x in pool[result]:final_ip_pool.append(fhttp://{proxyusernm}:{proxypasswd}{x[ip]}:{x[port]})return final_ip_pool#以列表的形式返回代理池
ip_pool get_ip_pool(API)然后在requests请求中添加上代理