Dotcpp  >  编程教程  >  Python实战项目  >  Python爬虫入门抓取豆瓣内容一

Python爬虫入门抓取豆瓣内容一

点击打开在线编译器,边学边练

实战内容:获取豆瓣TOP250电影的中英文名、港台名、导演、上映年份、电影分类以及评分,将数据存放到数据库和文件中。链接为:https://movie.douban.com/top250?start=

1. 数据爬取

爬取网页数据的方式我们在前面介绍过多种,下面来进行数据的爬取。

import re
import requests
from bs4 import BeautifulSoup
for i in range(0,2):
    headers = {#这里模拟浏览器进行访问
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) 
        AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',
        'Host': 'movie.douban.com'
    }
    res = 'https://movie.douban.com/top250?start='+str(25*i)#25次
    r = requests.get(res, headers=headers, timeout=10)#设置超时时间
    soup = BeautifulSoup(r.text, "html.parser")#设置解析方式,也可以
    print(soup)

输出结果为:

<!DOCTYPE html>
<html class="ua-windows ua-webkit">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<meta content="webkit" name="renderer"/>
<meta content="always" name="referrer"/>
<meta content="ok0wCgT20tBBgo9_zat2iAcimtN4Ftf5ccsh092Xeyw" name="google-site-verification">
<title>
豆瓣电影 Top 250
</title>
........
</script>
<!-- dae-web-movie--default-759d9f45f7-b69fc-->
<script>_SPLITTEST=''</script>
</link></link></body>
</html>

2.检查数据

这里我们使用Python中的hashlib模块中的mad5()函数,检查代码如下,如果大家是刚刚爬取到的数据,可以省略这一步。

MD5为计算机安全领域常用的一种加密算法。

import hashlib
def vertifyupdate(html):
    md5 = hashlib.md5()
    md5.update(html.encode(encoding = 'utf-8'))
    md5code = md5.hexdigest()
    print(md5code)
    old_html = ''
    htlm_name = 'gp.txt'
    if os.path.exists(htlm_name):
        with open(htlm_name,'r',encoding='utf-8') as f:
            old_html = f.read()
    if md5code == old_html:
        print('数据未更新')
        return False
    else:
        with open(htlm_name,'w',encoding='utf-8') as f:
            f.write(md5code)
        print('数据更新了')
        return True

这个函数需要导入hashlib模块,然后创建一个md5的对象,把当前页面的信息传入,通过使用updata()方法对传入的数据进行MD5运算。

然后使用if语句判断文件是否存在,如果存在就读取其中的MD5码,再通过判断两次的MD5码是否相同,如果一样就表示没有更新,反之则进行了更新,把新的MD5码传到文件中。

3. 总结

爬取数据是我们要做的第一步,如果数据存放了很久再进行使用则需要进行检测,这都是相对简单的步骤,比较麻烦的就在于如何去获取到更精准的数据,下一节我们来数据分析。



本文固定URL:https://www.dotcpp.com/course/328

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Python教程
第一章 Python入门
第二章 Python基础语法
第三章 Python入门语法
第四章 Python核心语法
第五章 Python函数
第六章 Python面向对象编程
第七章 Python模块
第八章 Python异常处理和程序调试
第九章 Python文件及目录操作
第十章 PythonGUI编程
第十一章 Python进程和线程
第十二章 Python数据库管理
第十三章 Python算法
第十四章 Python爬虫
第十五章 Python实战项目
第十六章 后记
Dotcpp在线编译      (登录可减少运行等待时间)