在之前的文章中,我们学习了如何对网页内容进行解析,并通过requests库对网页内容进行了获取,本文在此基础上,进一步介绍如何提取网页中我们想要的信息,并进行保存。
对网页信息的提取,我们可以通过正则表达式实现,因此我们首先导入正则表达式的第三方库,
import re
通过观察,我门发现我们所需要的内容在requests函数返回的内容中,如下图所示:

因此,我们可以通过以下正则表达式获取res.text中的相应信息:
titles = re.findall('\">\n.*?<span class="title">(.*?)</span>', res.text)
links = re.findall('<a href="(.*?)">\n.*?<span class="title">', res.text)
score = re.findall('<span class="rating_num" property="v:average">(.*?)</span>', res.text)
获取了信息后,我们通常需要对信息进行保存,这里介绍一种保存为列表格式的csv文件(可以通过类似方法保存为Excel,但需要导入相应的第三方库)。
我们通过循环,将需要的信息按照字典格式逐条写入列表中:
result = []
for title,link,score in zip(titles,links,scores):
dt = {
'电影名称':title,
'电影链接':link,
'电影评分':score,
}
result.append(dt)
再通过导入Pandas库,将字典类型的列表转换成DataFrame格式,并通过Pandas库的to_excel/to_csv将最终结果输出成想要的格式:
import pandas as pd
pd.DataFrame(result).to_excel('./output/豆瓣电影信息.xlsx')
pd.DataFrame(result).to_csv('./output/豆瓣电影信息.csv')
最终我们能够的到最终获取的电影信息:

最后附上完整代码:
import requests
import re
import pandas as pd
url = r'https://movie.douban.com/top250?start=0&filter='
paras = {'start':'0','filter':''}
headers = {
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0',
}
res = requests.get(url,params=paras,headers=headers)
titles = re.findall('\">\n.*?<span class="title">(.*?)</span>', res.text)
links = re.findall('<a href="(.*?)">\n.*?<span class="title">', res.text)
scores = re.findall('<span class="rating_num" property="v:average">(.*?)</span>', res.text)
result = []
for title,link,score in zip(titles,links,scores):
dt = {
'电影名称':title,
'电影链接':link,
'电影评分':score,
}
result.append(dt)
pd.DataFrame(result).to_excel('./output/豆瓣电影信息.xlsx')
pd.DataFrame(result).to_csv('./output/豆瓣电影信息.csv')

9642

被折叠的 条评论
为什么被折叠?



