python3爬虫之入门基础和正则表达式

Python3 爬虫之入门基础和正则表达式

什么是爬虫?

爬虫,也称网络爬虫,是指一种自动获取网页内容的程序。爬虫通常会通过模拟人工浏览网页的行为,去抓取网页中的数据。

为什么要学习爬虫?

学习爬虫可以帮助我们:

  1. 更好地了解数据,掌握数据分析的技能;
  2. 在互联网中获取到自己需要的信息,并进行分析,以用于各种应用场景;
  3. 搜集市场上的报价、行情、新闻等信息,帮助决策。

Python3 爬虫基础

Python3 可以使用 urllib、requests、beautifulsoup 等模块进行爬虫。

Urllib

Urllib 是 Python 内置的 HTTP 请求库,包含了对 HTTP 的一些基本操作,如发送 GET、POST 等请求,以及管理 Cookie、请求头信息等。

以下是一个简单的示例,使用 urllib 请求一个网页:

import urllib.request

response = urllib.request.urlopen('http://www.baidu.com')
print(response.read().decode('utf-8'))

这个示例中,我们使用 urllib.request.urlopen 函数打开一个网页,并将其返回结果保存到变量 response 中,然后使用 response.read() 函数读取网页的内容,并使用 decode() 函数进行编码转换。

Requests

Requests 是一个简单易用的 HTTP 请求库,在 Python 爬虫中被广泛使用。

以下是一个简单的示例,使用 requests 请求一个网页:

import requests

response = requests.get('http://www.baidu.com')
print(response.text)

这个示例中,我们使用 requests.get 函数请求一个网页,并将其结果保存到变量 response 中,然后使用 response.text 属性获取网页的内容。

BeautifulSoup

BeautifulSoup 是 Python 爬虫中用于解析 HTML 和 XML 文档的 Python 库,它可以从网页中提取需要的数据。与使用正则表达式从网页中提取数据相比,使用 BeautifulSoup 更加灵活简洁。

以下是一个简单示例,使用 BeautifulSoup 解析一个网页:

import requests
from bs4 import BeautifulSoup

response = requests.get('http://www.baidu.com')
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.title.string)

这个示例中,我们先使用 requests.get 函数请求一个网页,然后使用 BeautifulSoup 解析这个页面,并从中获取网页的标题。

正则表达式基础

正则表达式是一种匹配字符串的描述性语言,它可以用来描述字符串的规则,以及根据规则进行查找和筛选。

基本语法

正则表达式的基本语法包括以下几个元字符:

  • .:匹配任意一个字符;
  • []:匹配括号内任意一个字符;
  • *:匹配前一个字符任意次;
  • +:匹配前一个字符至少一次;
  • ?:匹配前一个字符零次或一次;
  • |:匹配左右两边的任意一项;
  • ():匹配括号内的表达式。

以下是一个简单的示例,使用正则表达式匹配某个字符串:

import re

text = 'Hello, World!'
pattern = 'l.{2}o'
match = re.search(pattern, text)
print(match.group())

这个示例中,我们使用 re.search 函数在一个字符串中查找一个正则表达式,并输出匹配到的结果。

常用正则表达式

正则表达式中,有一些常用的模式可以帮助我们更快地匹配字符串。例如:

  • \d:匹配任意一个数字;
  • \D:匹配任意一个非数字字符;
  • \w:匹配任意一个字母、数字或下划线;
  • \W:匹配任意一个非字母、数字或下划线。

以下是一个示例,使用正则表达式匹配中国大陆手机号:

import re

text = '我的手机号码是:13912345678,你呢?'
pattern = '1[3456789]\d{9}'
match = re.search(pattern, text)
print(match.group())

这个示例中,我们使用正则表达式匹配一个中国大陆手机号,并输出匹配到的结果。

示例一:爬取豆瓣电影 TOP250

以下是一个示例,演示如何使用 Python 爬虫爬取豆瓣电影 TOP250 并提取其中的电影名称、评分和评价人数:

import requests
from bs4 import BeautifulSoup
import csv

csv_file = open('movies.csv', 'w', newline='', encoding='utf-8')
writer = csv.writer(csv_file)
writer.writerow(['电影名称', '评分', '评价人数'])

url = 'https://movie.douban.com/top250'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
for i in range(10):
    response = requests.get(url, headers=headers, params={'start': i * 25})
    soup = BeautifulSoup(response.text, 'html.parser')
    movies = soup.select('.grid_view .item')
    for movie in movies:
        name = movie.select_one('.title').get_text().strip()
        rating = movie.select_one('.rating_num').get_text().strip()
        number = movie.select('.star span')[-1].get_text().strip().strip('人评价')
        print(name, rating, number)
        writer.writerow([name, rating, number])

csv_file.close()

这个示例中,我们首先打开一个 CSV 文件,并写入标题行。然后循环获取豆瓣电影 TOP250 的网页,使用 BeautifulSoup 解析网页,并提取出每个电影的名称、评分和评价人数。最后将这些信息写入 CSV 文件中。

示例二:爬取糗事百科热门段子

以下是一个示例,演示如何使用 Python 爬虫爬取糗事百科热门段子并提取其中的作者、点赞数和评论数:

import requests
from bs4 import BeautifulSoup
import csv

csv_file = open('jokes.csv', 'w', newline='', encoding='utf-8')
writer = csv.writer(csv_file)
writer.writerow(['作者', '点赞数', '评论数'])

url = 'https://www.qiushibaike.com/hot/page/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
for i in range(1, 11):
    response = requests.get(url + str(i), headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    articles = soup.select('.content-block')
    for article in articles:
        author = article.select_one('.recmd-name').get_text().strip()
        vote = article.select_one('.stats-vote .number').get_text().strip()
        comment = article.select_one('.stats-comments .number').get_text().strip()
        print(author, vote, comment)
        writer.writerow([author, vote, comment])

csv_file.close()

这个示例中,我们首先打开一个 CSV 文件,并写入标题行。然后循环获取糗事百科热门段子的网页,使用 BeautifulSoup 解析网页,并提取出每个段子的作者、点赞数和评论数。最后将这些信息写入 CSV 文件中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3爬虫之入门基础和正则表达式 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python中如何使用函数改变list

    以下是详细讲解“Python中如何使用函数改变list”的完整攻略。 在Python中,可以使用函数来改变list。本文将介绍两种常用的函数:append()和extend()。 方法一:使用append() 可以使用append()函数向list中添加元素。例如: lst = [1, 2, 3] lst.append(4) print(lst) # 输出[…

    python 2023年5月13日
    00
  • Python Matplotlib基本用法详解

    Python Matplotlib基本用法详解 简介 Matplotlib是一个用于创建高质量图表的Python库,它能够以各种硬拷贝格式和跨平台交互式环境生成出版物质量的图表。本攻略将介绍Matplotlib的基本使用方法,包括图表的类型、线条和标注的设置、字体的设置等等。 安装 在使用Matplotlib之前,需要先安装该库,可以使用以下命令进行安装: …

    python 2023年5月19日
    00
  • Python字符串格式化常用手段及注意事项

    Python字符串格式化是Python中常见的操作之一。通过字符串格式化,可以将多个值按照一定的格式以字符串的形式输出。下面是Python字符串格式化的常用手段和注意事项。 格式化字符串 Python提供了多种方式格式化字符串,主要有两种: 使用百分号(%)方式 可以使用百分号(%)来格式化一个字符串。如下所示: name = ‘Alice’ age = 2…

    python 2023年6月5日
    00
  • python进程和线程用法知识点总结

    Python进程和线程用法知识点总结 什么是进程和线程? 在操作系统中,进程是一个程序执行时的实例,拥有独立的内存空间和系统资源,线程是程序执行的最小单位,属于进程,多个线程可以共享一个进程的资源。 进程和线程的优点和缺点 进程的优点 稳定性高,一个进程崩溃不会影响其他进程的稳定性; 安全性高,进程之间是独立的,一个进程不能访问其他进程的资源; 可以利用多核…

    python 2023年5月19日
    00
  • python 基于opencv 实现一个鼠标绘图小程序

    下面我将为您详细讲解“python基于opencv实现一个鼠标绘图小程序”的完整攻略。 简介 本文介绍如何使用Python和OpenCV库来实现一个简单的鼠标绘图小程序。主要包含以下步骤: 创建窗口 绑定鼠标事件 绘制图形 退出程序 创建窗口 首先需要导入OpenCV库并创建一个窗口。可以使用cv2.namedWindow()函数来创建一个窗口,并指定窗口的…

    python 2023年5月19日
    00
  • pywinauto自动化操作记事本

    下面是关于如何使用pywinauto自动化操作记事本的完整攻略。 简介 pywinauto是一个基于Python语言的自动化工具,可以用来自动化Windows的GUI应用程序的测试、交互等操作。本篇攻略将会介绍如何使用pywinauto来自动化操作Windows记事本应用程序。 安装 在使用pywinauto之前,需要先安装pywinauto库。可以使用pi…

    python 2023年5月19日
    00
  • 11函数入门

    函数入门 函数的作用 函数就是将一段具有独立功能的代码块整合到一个整体并命名在需要的位置调用这个名称即可完成对应的需求。 作用:封装代码,实现代码重用,减少内存空间,方便代码的管理和维护 函数的使用 定义函数 def 函数名称(参数): 代码1 代码2 …… return 返回值 在定义函数时,如果暂时还没想法可以用pass进行跳过 使用函数:函数名…

    python 2023年4月17日
    00
  • Python实现在Excel中绘制可视化大屏的方法详解

    Python实现在Excel中绘制可视化大屏的方法详解 本教程将介绍使用Python将数据可视化绘制在Excel表格中的方法。 1.准备工作 首先,我们需要导入Python的一些库。这里我们使用pandas处理数据、openpyxl操作Excel、matplotlib进行数据可视化。 import pandas as pd from openpyxl imp…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部