2019/6/14

今日总结:

昨日回顾:

爬虫原理:

什么是爬虫?

爬虫指的是爬取数据

什么是互联网?

互联网是一堆网络设备把一台一台的计算机互联到一起

互联网建立的目的?

数据的传递与数据的共享

上网的过程:

普通用户:打开浏览器-->往目标站点发送请求-->接收响应数据-->渲染到页面上

爬虫程序:模拟浏览器-->往目标站点发送请求-->接收响应数据-->提取有用的-->保存到本地

浏览器发送的是什么请求?

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)

# if_name_=='_main_'
# 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)
#(.*?):提取括号内的内容
#。*?:直接匹配

 

import requests #在get添加headers headers={     'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/' } # response=requests.get(url='https://www.zhihu.com/topics',headers=headers) # print(response.status_code) # with open('zhuhu.html','w',encoding='utf-8') as f: #     f.write(response.text) # ''' # params参数 # 访问百度搜索蔡徐坤url # # ''' # from urllib.parse import urlencode # url='https://www.baidu.com/s?'+urlencode({"wd":"蔡徐坤"}) # print(url) # response=requests.get(url=url,headers=headers) # with open('caixukun.html','w',encoding='utf-8') as f: #     f.write(response.text)
#携带cookies破解github破登陆验证
 
携带cookies
携带登录cookies破解eithub登录验证
请求url:
http://github.com/stettings/emails
请求方式:
GET
请求头:
User-Agen
cookie: has_recent_activity=1;_ga=GA1.2.14232345.23452345; _get=1;tz=Asia%
 
import requests
cookies = {
````````````````````````````````````````
}
 
github_res = requests.get(url,headers = headers = cookies)
print('11324234' in github_res.text)
'''''' ''' 主页:     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)


今日作业:
爬取红框内容,如图:

 

 # 电影详情页url、图片链接、电影名称、导演、主演、电影上映时间、电影评分、评价人数、简介    <div class="item">.*?href="(.*?)">.*?src="(.*?)" class="">.*?<span class="title">(.*?)</span>.*?<div class="bd">.*?导演:(.*?)<br>(.*?)</p>.*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人评价.*?<span class="inq">(.*?)</span>
posted @ 2019-06-14 09:34  邵贤伟  阅读(147)  评论(0编辑  收藏  举报