Python3爬虫之入门基础和正则表达式攻略
1. 爬虫的入门基础
1.1 爬虫的定义
爬虫(Spider),是网络爬虫的简称,是一种程序,能够按照一定的规则,自动地抓取互联网上特定网站上的信息,并将这些信息存储到本地。爬虫的用途非常广泛,例如数据挖掘、搜索引擎、自动化测试等。
1.2 爬虫的原理
爬虫的原理通常分为以下几步:
-
发送HTTP请求:爬虫首先要发送HTTP请求,获取所需要的网页数据。
-
解析HTML代码:爬虫需要解析HTML代码,提取有用的数据信息。
-
存储数据:爬虫需要将抓取到的数据存储到本地或者数据库中。
1.3 爬虫的基本流程
爬虫的基本流程通常分为以下几步:
-
发送请求。可以使用Python的requests模块发送HTTP请求,获取网页源代码。
-
解析HTML代码。可以使用Python的BeautifulSoup模块对HTML代码进行解析,提取所需数据。
-
存储数据。可以使用Python的csv模块将数据存储到csv文件中,可以使用Python的pymysql模块将数据存储到MySQL数据库中。
1.4 Python中的常用库
Python中常用的爬虫库有requests、BeautifulSoup、re、csv、pymysql等。其中requests库用于发送HTTP请求,BeautifulSoup库用于解析HTML代码,re库用于正则表达式匹配,csv库用于存储数据到csv文件中,pymysql用于存储数据到MySQL数据库中。
2. 正则表达式
2.1 正则表达式的定义
正则表达式是一种强大的文本匹配模式,在编程中经常用于有效地搜索、替换、过滤文本。Python中内置了re模块,可以用来操作正则表达式。
2.2 正则表达式的语法
正则表达式的语法比较复杂,其基本语法有以下几种:
符号 | 描述 |
---|---|
. | 表示任意单个字符,除了换行符之外的任意字符 |
^ | 表示行首字符的匹配 |
$ | 表示行尾字符的匹配 |
* | 表示前一个字符的任意个数,可以是0个 |
+ | 表示前一个字符的至少一个 |
? | 表示前一个字符的零个或一个 |
{m,n} | 表示前一个字符的m至n个 |
[…] | 表示[]中任意一个字符 |
[^…] | 表示[]中除了…之外任意字符 |
(regex1|regex2) | 表示regex1或者regex2其中之一 |
2.3 正则表达式的常用方法
方法 | 描述 |
---|---|
search() | 会扫描整个字符串查找匹配项 |
findall() | 返回一个列表包含有字符串中所有的匹配项 |
sub() | 用于替换匹配项 |
compile() | 用于编译正则表达式 |
3. 示例说明
3.1 爬取网站信息
以下是一个简单的示例,用Python爬取网站信息:
import requests
from bs4 import BeautifulSoup
url = 'https://www.baidu.com/'
r = requests.get(url)
r.encoding = 'utf-8'
soup = BeautifulSoup(r.text, 'html.parser')
print(soup.title.string)
上述代码中,首先引入了requests模块和BeautifulSoup模块,然后使用requests模块发送HTTP请求,获取网页源代码。接着使用BeautifulSoup模块对HTML代码进行解析,提取网页标题,并打印出来。
3.2 使用正则表达式匹配字符串
以下是一个简单的示例,使用正则表达式匹配字符串:
import re
pattern = r'\d+'
string = 'hello123world456good'
result = re.findall(pattern, string)
print(result)
上述代码中,定义了一个正则表达式,用于匹配字符串中的数字。然后使用re模块的findall()方法,查找匹配项,并将匹配结果保存到列表中,并打印出来。
4. 总结
本文从爬虫的定义、原理、基本流程、Python中的常用库和正则表达式的基本语法、常用方法等方面,对初学者进入爬虫领域提供了一些基础的知识和示例。同时,对于更深入的学习,需要进一步的理解和实践。