下面是详细的攻略:
Python正则表达式爬取猫眼电影Top100
在本文中,我们将使用Python正则表达式爬取猫眼电影Top100的电影信息。我们将使用Python的requests库发送HTTP请求,然后使用正则表达式从HTML页面中提取电影信息。
爬取猫眼电影Top100
首先,我们需要使用Python的requests库发送HTTP请求,获取猫眼电影Top100的HTML页面。下面是示例代码:
import requests
url = 'https://maoyan.com/board/4'
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'}
response = requests.get(url, headers=headers)
html = response.text
在上面的代码中,我们使用requests库发送HTTP请求,获取猫眼电影Top100的HTML页面。我们使用了requests.get()
函数发送GET请求,然后使用response.text
属性获取HTML页面的文本内容。
提取电影信息
接下来,我们需要使用正则表达式从HTML页面中提取电影信息。我们可以使用Python的re模块来进行正则表达式操作。下面是示例代码:
import re
pattern = r'<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>'
movies = re.findall(pattern, html, re.S)
for movie in movies:
print(movie)
在上面的代码中,我们使用正则表达式从HTML页面中提取电影信息。我们使用了re.findall()
函数来搜索HTML页面中匹配正则表达式的所有字符串,并返回一个列表。我们使用了一个较为复杂的正则表达式,用于匹配电影的排名、海报、名称、主演、上映时间、评分等信息。
示例一:提取电影名称
下面是一个示例,演示如何使用正则表达式从HTML页面中提取电影名称:
import re
import requests
url = 'https://maoyan.com/board/4'
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'}
response = requests.get(url, headers=headers)
html = response.text
pattern = r'<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>'
movies = re.findall(pattern, html, re.S)
for movie in movies:
name = movie[2]
print(name)
在上面的代码中,我们使用正则表达式从HTML页面中提取电影名称。我们使用了re.findall()
函数来搜索HTML页面中匹配正则表达式的所有字符串,并返回一个列表。然后,我们使用了一个for循环遍历列表,提取每个电影的名称。
示例二:提取电影评分
下面是另一个示例,演示如何使用正则表达式从HTML页面中提取电影评分:
import re
import requests
url = 'https://maoyan.com/board/4'
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'}
response = requests.get(url, headers=headers)
html = response.text
pattern = r'<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>'
movies = re.findall(pattern, html, re.S)
for movie in movies:
score = movie[5] + movie[6]
print(score)
在上面的代码中,我们使用正则表达式从HTML页面中提取电影评分。我们使用了re.findall()
函数来搜索HTML页面中匹配正则表达式的所有字符串,并返回一个列表。然后,我们使用了一个for循环遍历列表,提取每个电影的评分,并将整数部分和小数部分拼接成一个字符串。
总结
本文介绍了如何使用Python正则表达式爬取猫眼电影Top100的电影信息。我们使用了Python的requests库发送HTTP请求,然后使用正则表达式从HTML页面中提取电影信息。同时,我们还提供了两个示例,用于演示如何使用正则表达式从HTML页面中提取电影名称和评分。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python正则表达式爬取猫眼电影top100 - Python技术站