以下是“Python用正则表达式实现爬取古诗文网站信息”的完整攻略,包括步骤和两个示例。
Python用正则表达式实现爬取诗文网站信息
步骤1:导入requests和re模块
在Python中,需要使用requests和re模块来进行网页请求和正则表达式的匹配。可以使用以下代码导入requests和re模块:
import requests
import re
步骤2:发送请求并获取网页内容
在Python中,可以使用requests库发送HTTP请求,并获取网页内容。可以使用以下代码:
url = 'https://www.gushiwen.org/'
response = requests.get(url)
html = response.text
其中,url是需要请求的网址,response是请求的响应对象,html是响应对象中的网页内容。
步骤3:使用正则表达式匹配网页内容
在Python中,可以使用re模块的正则表式函数来匹配网页内容,并提取需要的信息。可以使用以下代码:
pattern = r'<div\sclass="cont">.*?<h1>(.*?)</h1>.*?<p\sclass="source">.*?<a.*?>(.*?)</a>.*?<a.*?>(.*?)</a>.*?</p>.*?<div\sclass="contson".*?>(.*?)</div>'
results = re.findall(pattern, html, re.S)
其中,pattern是正则表达式,用于匹配网页内容中的诗歌标题、作者、朝代和内容。re.findall()函数用于匹配所有符合正则表达式的内容,并返回一个列表。
示例1:提取古诗文网站中的诗歌信息
以下是一个示例,用于提取古诗文网站中的诗歌信息:
import requests
import re
url = 'https://www.gushiwen.org/'
response = requests.get(url)
html = response.text
pattern = r'<div\sclass="cont">.*?<h1>(.*?)</h1>.*?<p\sclass="source">.*?<a.*?>(.*?)</a>.*?<a.*?>(.*?)</a>.*?</p>.*?<div\sclass="contson".*?>(.*?)</div>'
results = re.findall(pattern, html, re.S)
for result in results:
title = result[0]
author = result[1]
dynasty = result[2]
content = result[3]
print('标题:', title)
print('作者:', author)
print('朝代:', dynasty)
print('内容:', content)
print('------------------------')
在上面的示例中,我们使用正则表达式匹配古诗文网站中的诗歌信息,并使用for循环遍历所有匹配结果。我们提取了诗歌的标题、作者、朝代和内容,并将其打印到控制台上。
示例2:提取古诗文网站中的诗人信息
以下是一个示例,用于提取古诗文网站中的诗人信息:
import requests
import re
url = 'https://www.gushiwen.org/authors/'
response = requests.get(url)
html = response.text
pattern = r'<div\sclass="sonspic">.*?<a.*?href="(.*?)".*?>.*?<img.*?src="(.*?)".*?>.*?<div\sclass="cont">.*?<p><a.*?>(.*?)</a></p>.*?<p>(.*?)</p>'
results = re.findall(pattern, html, re.S)
for result in results:
author_url = result[0]
author_image = result[1]
author_name = result[2]
author_desc = result[3]
print('链接:', author_url)
print('头像:', author_image)
print('姓名:', author_name)
print('简介:', author_desc)
print('------------------------')
在上面的示例中,我们使用正则表达式匹配古诗文网站中的诗人信息,并使用for循环遍历所有匹配结果。我们提取了诗人的链接、头像、姓名和简介,并将其打印到控制台上。
注意事项
在使用Python爬虫时,需要注意以下事项:
- 需要遵守网站的爬虫规则,如robots.txt文件等。
- 需要使用合适的请求头,以避免网站屏蔽。
- 需要使用合适的代理,以避免被网站屏蔽。
- 需要使用合适的解析,以便正确解析HTML和XML文档。
- 需要使用合适的存储方式,以便后续的数据分和处理。