Python如何利用正则表达式爬取网页信息及图片

  • Post category:Python

Python利用正则表达式爬取网页信息及图片的完整攻略如下:

步骤一:导入模块

在Python中,我们需要导入rerequests模块来实现正则表达式爬取网页及图片的功能。re模块用于处理正则表达式,requests模块用于发送HTTP请求和获取响应。

import re
import requests

步骤二:发送HTTP请求

在Python中,我们可以使用requests模块发送HTTP请求,并获取响应。以下是一个示例,展示了如何使用requests模块发送HTTP请求:

url = 'https://www.example.com'
response = requests.get(url)
html = response.text

在上面的示例中,我们使用requests.get()函数发送HTTP请求,并将响应保存到response变量中。然后,我们使用response.text属性获取响应的HTML内容,并将其保存到html变量中。

步骤三:使用正则表达式匹配信息

在Python中,我们可以使用正则表达式来匹配网页中的信息。以下是一个示例,展示了如何使用正则表达式匹配网页中的标题:

pattern = r'<title>(.*?)</title>'
title = re.findall(pattern, html)[0]

在上面的示例中,我们使用正则表达式<title>(.*?)</title>匹配网页中的标题,并使用re.findall()函数查找所有匹配的结果。由于re.findall()函数返回一个列表,因此我们可以使用[0]获取第一个匹配的结果。

步骤四:使用正则表达式匹配图片

在Python中,我们也可以使用正则表达式来匹配网页中的图片。以下是一个示例,展示了如何使用正则表达式匹配网页中的图片:

pattern = r'<img.*?src="(.*?)".*?>'
images = re.findall(pattern, html)

在上面的示例中,我们使用正则表达式<img.*?src="(.*?)".*?>匹配网页中的图片,并使用re.findall()函数查找所有匹配的结果。由于re.findall()函数返回一个列表,因此我们可以将所有匹配的图片URL保存到images变量中。

示例一:爬取网页信息

假设我们要爬取百度首页的标题,可以使用以下代码:

import re
import requests

url = 'https://www.baidu.com'
response = requests.get(url)
html = response.text

pattern = r'<title>(.*?)</title>'
title = re.findall(pattern, html)[0]

print(title)

在上面的示例中,我们使用requests模块发送HTTP请求,获取百度首页的HTML内容。然后,我们使用正则表达式<title>(.*?)</title>匹配网页中的标题,并使用re.findall()函数查找所有匹配的结果。最后,我们将匹配的标题打印出来。

示例二:爬取网页图片

假设我们爬取百度首页的所有图片,可以使用以下代码:

import re
import requests

url = 'https://www.baidu.com'
response = requests.get(url)
html = response.text

pattern = r'<img.*?src="(.*?)".*?>'
images = re.findall(pattern, html)

for image in images:
    print(image)

在上面的示例中,我们使用requests模块发送HTTP请求,获取百度首页的HTML内容。然后,我们使用正则表达式<img.*?src="(.*?)".*?>匹配网页中的图片,并使用re.findall()函数查找所有匹配的结果。最后,我们使用for循环遍历所有匹配的图片URL,并将其打印出来。