Python实现一个基础爬虫?_用python做一个爬虫

liftword1周前 (02-21)技术文章9

Python爬虫技术就是指通过Python语言来编写一些自动化的数据处理程序从网页上来获取自己想要的数据,我们可以通过Python爬虫来获取公开网页上的数据,对数据进行分析、存储、数据可视化展示等操作,下面我们就带大家来完成一个最基础的Python爬虫的搭建。

环境准备

??想要实现Python爬虫,就必须要确保安装了Python的环境以及必要的Python爬虫库,如下所示,我们可以通过pip工具来安装需要的爬虫库。

pip install requests
pip install beautifulsoup4

??其中

  • requests:用于发送 HTTP 请求并获取网页内容。
  • beautifulsoup4:用于解析 HTML 页面,提取数据。

发送请求获取网页内容

??爬虫的第一步也是比较核心的一步就是发送HTTP请求获取网页中HTML的内容。一般情况下这个操作通常就是由我们的request库来完成,如下所示。

import requests

# 目标网址
url = "https://example.com"

# 发送 GET 请求
response = requests.get(url)

# 检查请求是否成功
if response.status_code == 200:
    print(response.text)  # 打印网页内容
else:
    print("请求失败,状态码:", response.status_code)

解析网页内容

??通过Request获取到网页中的内容之后,接下来就是需要通过BeautifulSoup 来解析 HTML,然后提取到我们需要的网页中的数据内容,如下所示。

from bs4 import BeautifulSoup

# 获取网页内容
html_content = response.text

# 创建 BeautifulSoup 对象进行解析
soup = BeautifulSoup(html_content, 'html.parser')

# 输出网页的结构
print(soup.prettify())  # 美化输出 HTML 结构

提取特定内容

??如果想要获取到网页中的某些特定的数据信息,如下所示,展示了如何获取网页中的所有的连接信息。

# 查找所有的  标签
links = soup.find_all('a')

# 打印所有链接的 href 属性
for link in links:
    print(link.get('href'))

??或者可以根据HTML的标签、ID、Class等属性提取对应的展示标签内容,来获取相关的信息,如下所示。

# 根据 class 属性查找
links = soup.find_all('a', class_='some-class')

# 根据 id 属性查找
header = soup.find(id='header-id')

print(header)

模拟浏览器行为(例如登录)

??当然除了上面的这些简单的操作之外,我们还可以模拟用户的操作行为,例如网站上可能会通过JavaScript或者是通过表单的形式来提交用户登录信息,这个时候,我们就可以通过Request库来模拟网页等操作,如下所示。

# 登录时需要提交的数据
payload = {
    'username': 'your_username',
    'password': 'your_password',
}

# 登录请求
login_url = "https://example.com/login"
session = requests.Session()  # 创建一个会话
login_response = session.post(login_url, data=payload)

# 访问需要登录后的页面
page_url = "https://example.com/dashboard"
page_response = session.get(page_url)

# 打印页面内容
print(page_response.text)

处理反爬虫机制

??现在很多网站为了能够留住客户信息获取渠道,都设置有反爬虫机制,例如对于IP的限制、对于验证码限制、对于User-Agent的检测等等,为了应对这些情况我们可以设置请求头信息,将我们的请求伪装成浏览器的请求,然后可以防止反爬虫机制,如下所示。

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}

response = requests.get(url, headers=headers)

print(response.text)

数据存储

??最终在我们获取到了数据之后,我们可以将这些数据存储到本地方便在其他地方使用,如下所示,展示了如何将数据存储到CSV 文件中。

import csv

# 假设我们提取了标题和链接
data = [("Title1", "http://example.com/1"), ("Title2", "http://example.com/2")]

# 存储到 CSV 文件
with open('output.csv', mode='w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerow(['Title', 'URL'])  # 写入表头
    writer.writerows(data)

??或者也可以将数据存储到JSON文件中提供Mork调用。

import json

data = {
    "title": "Example Title",
    "url": "http://example.com"
}

with open('output.json', 'w', encoding='utf-8') as json_file:
    json.dump(data, json_file, ensure_ascii=False, indent=4)

爬虫的基本结构

??介绍完上面的步骤之后,下面我们给出一个简单爬虫的基本结构如下所示。

import requests
from bs4 import BeautifulSoup

def fetch_data(url):
    # 发送请求
    response = requests.get(url)
    if response.status_code != 200:
        print("请求失败")
        return None
    return response.text

def parse_data(html):
    # 解析 HTML 内容
    soup = BeautifulSoup(html, 'html.parser')
    # 提取数据
    data = []
    for item in soup.find_all('div', class_='item'):
        title = item.find('h2').get_text()
        link = item.find('a')['href']
        data.append((title, link))
    return data

def save_data(data):
    # 存储数据
    with open('output.csv', 'w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        writer.writerow(['Title', 'Link'])
        writer.writerows(data)

def main():
    url = "https://example.com"
    html = fetch_data(url)
    if html:
        data = parse_data(html)
        save_data(data)

if __name__ == '__main__':
    main()

??在上面的这个结构中,展示了如何发送请求、如何解析网页数据。然后通过循环、条件判断等操作来获取网页信息,然后将数据写入到了CSV文件中。

总结

??上面这个步骤,只涉及到了Python爬虫技术最为核心基础的部分,在实际开发中还有很多高级技巧的使用,例如AJAX请求处理、利用代理防止IP封锁、定时爬取等,但是需要注意爬虫本身并不违法,但是利用技术干一些违法的事情就是破坏底线了,所以如果网站明确禁止爬取,最好遵守规则。

相关文章

什么是Python爬虫?一篇文章带你全面了解爬虫

一、什么叫爬虫爬虫,又名“网络爬虫”,就是能够自动访问互联网并将网站内容下载下来的程序。它也是搜索引擎的基础,像百度和GOOGLE都是凭借强大的网络爬虫,来检索海量的互联网信息的然后存储到云端,为网友...

程序员python入门课,30分钟学会,30行代码写爬虫项目

现在很多人学习编程,最开始就是选择的python,因为python现在比较火,薪资水平在程序员领域也是比较高的,入门快,今天就给大家分享一个用python写的小爬虫项目,只需要30行代码,认真学习,...

详细介绍一下Python中如何使用来创建爬虫?

Selenium是一个用来对Web应用程序进行测试的自动化测试工具,能够模拟出用户在浏览器中的各种行为,通过自动化的操作来执行任务,例如说可以模拟用户点击按钮、填写表单、抓取网页内容等,虽然是一个自动...

巨细!Python爬虫详解_python爬虫详细教程

来源:【公众号】Python技术爬虫(又称为网页蜘蛛,网络机器人,在 FOAF 社区中间,更经常的称为网页追逐者);它是一种按照一定的规则,自动地抓取网络信息的程序或者脚本。如果我们把互联网比作一张大...

超详细的python爬虫案例,一次爬取上百篇文章

一次爬多篇文章,逻辑是先从主网址爬到每篇文章的网址,再从各个网址处爬取文章,很简单的静态网页爬取,不需考虑反扒问题。话不多说,直接案例说话。实例:从https://www.biquge.com.cn/...

最简单的python爬虫案例,适合入门学习

用python从网页爬取数据,网上相关文章很多,但能让零基础初学者轻松上手的却很少。可能是有的作者觉得有些知识点太简单不值得花费精力讲,结果是难者不会会者不难,初学者常常因此而蒙圈。本人也是小白,刚摸...