Python爬虫学习教程 猫眼电影网站视频爬取!【附源码】
程序员文章站
2022-06-21 23:04:03
学习Python是否感到过度劳累,四肢乏力,腰腿酸痛?这是没找到学习方法的表现!都知道编程是环环相扣的吧 如果基础没学好的话 那么代码你是肯定看不懂的~每个技术大牛都是从基础慢慢的提升上去的,基础知识越深以后的发展越牛! ......
学习python是否感到过度劳累,四肢乏力,腰腿酸痛?这是没找到学习方法的表现!都知道编程是环环相扣的吧 如果基础没学好的话 那么代码你是肯定看不懂的~每个技术大牛都是从基础慢慢的提升上去的,基础知识越深以后的发展越牛!
思路:
1.利用requests去过去网站上的前端源代码 在源代码中存在我们想要获取的数据
2.在源代码中筛选出我们想要的数据 数据筛选 bs4
3.把筛选出来的数据存放到文件中 保存数据
爬虫的原理:
模拟浏览器向服务器发送一个get()请求,服务器接收到请求之后返回相应的数据给爬虫代码
get() 单纯的拿数据
post() 在拿数据的过程中还能修改数据
对于初学者在学习python过程中有不懂的或是缺少这方面学习教程的可以加一下我建的python技术的学习裙;九三七六六七五零九,一起学习。群里有相关开发工具,学习教程,每天还有专业的老司机在线直播分享知识与技术答疑解惑!
项目源码
1 # pip install bs4 2 from bs4 import beautifulsoup 3 4 # 网络请求包 它能获取到网站上的前端源代码 5 6 # pip install requests 7 import requests 8 9 # json 在文件处理中 python没有办法把一个对象写入文件中 字典就是python中的一个对象 10 import json 11 12 ''' 13 在python中的表现形式 14 基本数据类型 15 列表 16 字典 17 集合 18 元组 19 20 字典 {'name': '未衬'} 运用在后端 21 json {"name": "未衬"} 运用在前端 22 ''' 23 24 ''' 25 思路: 26 1.利用requests去过去网站上的前端源代码 在源代码中存在我们想要获取的数据 27 2.在源代码中筛选出我们想要的数据 数据筛选 bs4 28 3.把筛选出来的数据存放到文件中 保存数据 29 30 爬虫的原理: 31 模拟浏览器向服务器发送一个get()请求,服务器接收到请求之后返回相应的数据给爬虫代码 32 33 get() 单纯的拿数据 34 post() 在拿数据的过程中还能修改数据 35 ''' 36 # 这种数据结构是一种典型的字典格式 37 # 作用 定义浏览器 38 headers = { 39 'user-agent': 40 'mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/72.0.3626.121 safari/537.36' 41 } 42 43 44 # 获取请求页面 45 ''' 46 url 是一种形式参数 47 我们去调用getpage()这个函数的时候要去给这个url做赋值 48 ''' 49 50 51 def getpage(url): 52 # 异常处理 保证我们的程序不会因为网络原因导致程序崩溃 53 try: 54 response = requests.get(url, headers=headers) 55 if response.status_code == 200: 56 return response.text 57 else: 58 return none 59 except exception: 60 return none 61 62 63 # 获取电影信息 pip install lxml 64 def getinfo(html): 65 # 使用beautifulsoup匹配电影的索引 海报 电影名 主演 评分 66 soup = beautifulsoup(html, 'lxml') 67 items = soup.select('dd') 68 69 for item in items: 70 index = item.find(name='i', class_='board-index').get_text() 71 name = item.find(name='p', class_='name').get_text() 72 start = item.find(name='p', class_='star').get_text().strip() 73 time = item.find(name='p', class_='releasetime').get_text() 74 score = item.find(name='p', class_='score').get_text() 75 76 # 生成器 77 78 ''' 79 迭代器 80 生成器 81 装饰器 82 ''' 83 84 # 可以把yield看成return 就是专门返回数据的 yield有一种特性 惰性机制 85 # 它因为这种机制 可以实现节约内存的效果 86 yield { 87 'index': index, 88 'name': name, 89 'start': start, 90 'time': time, 91 'score': score 92 } 93 94 # 写入文件 95 def writedata(field): 96 # 文件处理 97 with open('maoyan_info.txt', 'a', encoding='utf-8') as f: 98 f.write(json.dumps(field, ensure_ascii=false) + '\n') 99 100 101 # 入口函数 102 if __name__ == "__main__": 103 for num in [i * 10 for i in range(11)]: 104 url = 'https://maoyan.com/board/4?offset=' + str(num) 105 html = getpage(url) 106 107 for item in getinfo(html): 108 print(item) 109 writedata(item) 110 111 112 '''
代码不要直接复制,要自己动手敲,学习python一定要多动手!
下一篇: 定位new表达式与显式调用析构函数