爬取猫眼排行榜的过程
我之前都没有记录的习惯,现在看以前学习过的一些东西全给忘了,所以现在打算好好把东西记录下来,以后忘了可以翻一翻。
现在我学习的是崔庆才博客里面的知识,因为以前学习过,现在只是将其中的东西梳理一下。
首先开始实战部分,开始爬取猫眼排行榜的TOP100,这里用到的模块是requests,re,json,time等模块。
开始打开猫眼排行榜,找到榜单部分,点击TOP100,就看到了评分最高的100部影片,
通过以上图片可以看出,一部影片完整的信息被包裹在一个dd标签之中,现在知道了信息在哪,那么接下来就是解析这个dd标签就行了。
爬取第一页的内容
import requests
def get_one_page(url): #构造一个解析url的方法
response = requests.get(url) #取获取这个url的内容
if response.status_code == 200: #如果返回码为200则返回response的text文件
return response.text #返回url的源码
return None
def main(): #主函数
url = 'http://maoyan.com/board/4' #url
html = get_one_page(url) #调用url
print(html) #输出获取的url的html源码
main()
运行上面那段代码可以获取所有的源码
上面就是爬取的源码,下面就是进行解析了。
用正则对源码进行解析
首先我们将我们需要的信息列出来,我们爬取出排行,封面图,电影名,主演,上映时间,评分。接下来我们可以观察这些信息都位于上面标签中,排行在一个i标签中,class为board-index,图片位于一个img标签中…
下面进行正则匹配,单个影片所有信息都位于dd标签中,比如匹配排名
<dd>.*?board-index.*?>(.*?)</i> #括号中就是排名,.*?代表任意字符
完整的正则表达式为
('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a.*?>(.*?)</a>.'
+ '*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer"