今日总结:
昨日回顾:
爬虫原理:
什么是爬虫?
爬虫指的是爬取数据
什么是互联网?
互联网是一堆网络设备把一台一台的计算机互联到一起
互联网建立的目的?
数据的传递与数据的共享
上网的过程:
普通用户:打开浏览器-->往目标站点发送请求-->接收响应数据-->渲染到页面上
爬虫程序:模拟浏览器-->往目标站点发送请求-->接收响应数据-->提取有用的-->保存到本地
浏览器发送的是什么请求?
http协议的请求:
请求url
请求方式:GET/POST
请求头:cookies
user-agent
host
爬虫的全过程:
1.发送请求(请求库)
requests模块
selenium模块
2.获取响应数据(服务器返回)
3.解析并提取数据(解析库)
bs4(BeautifulSoup4)
Xpath
4.保存数据(存储库 )
MongoDB
1.3.4需手动写
爬虫框架
Scrapy(基于面向对象)
爬取梨视频:
1.分析网站的视频源地址
2.通过requests网视频源地址发送请求
3.获取视频的二进制流,并保存在本地
使用Chorme浏览器工具
打开开发者模式---->network--->
今日内容:
requests模块详细使用
selenium模块
import requests
import re #正规模块
#uuid.uuid4()可以根据时间戳生成世界上唯一的随机字符串
#uuid uuid
#爬虫三部曲
#1.发送请求
def get_page(url1):
response = resquests.get(url)
return response
#2.解析数据
#获取详情页获取视频详情页ID
def parse_index(text):
res = re.findall('<a href="video_(.*?)"',text,re.S)
#print(res)
detail_url_list = []
for m_id in res:
#拼接详情页url
def parse_detail(text):···
#解析详情页获取视频url
#1.对主页发送请求
index—res
#3保存数据
def sava_movie(moive_url)
response = requests.get(movie)
# response=get_page(url='https://www.pearvideo.com/')
# detail_url=parse_index(response.text)
# #对每一个url发送请求
# for detail_url in detail_url_list:
# detail_res=get(url=detail_url)
# print(detail_res.text)
# response=requests.get(url='https://www.pearvideo.com/')
# print(response.status_code)
# print(response.text)
# #正则规则
# #re.S全局模式(对整个文本进行匹配)
# #.指的是查找所有*指查找所有
# res=re.findall('<a href="video_(.*)"', response.text, re.S)
# for m_id in res:
# detail_url='https://www.pearvideo.com/video_'+m_id
# print(detail_url)
#(.*?):提取括号内的内容
#。*?:直接匹配
#携带cookies破解github破登陆验证
'''''' ''' 主页: https://movie.douban.com/top250 GET User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36 re正则: # 电影详情页url、图片链接、电影名称、电影评分、评价人数 <div class="item">.*?href="(.*?)">.*?src="(.*?)".*?<span class="title">(.*?)</span>.*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人评价 ''' import requests import re url = 'https://movie.douban.com/top250' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36' } # 1、往豆瓣TOP250发送请求获取响应数据 response = requests.get(url, headers=headers)
# print(response.text) # 2、通过正则解析提取数据 # 电影详情页url、图片链接、电影名称、电影评分、评价人数 movie_content_list = re.findall( # 正则规则 '<div class="item">.*?href="(.*?)">.*?src="(.*?)".*?<span class="title">(.*?)</span>.*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人评价', # 解析文本 response.text, # 匹配模式 re.S)
for movie_content in movie_content_list: # 解压赋值每一部电影 detail_url, movie_jpg, name, point, num = movie_content data = f'电影名称:{name}, 详情页url:{detail_url}, 图片url:{movie_jpg}, 评分: {point}, 评价人数: {num} \n' print(data)
# 3、保存数据,把电影信息写入文件中 with open('douban.txt', 'a', encoding='utf-8') as f: f.write(data)
今日作业:
爬取红框内容,如图: