码迷,mamicode.com
首页 > 编程语言 > 详细

03python爬虫

时间:2019-06-26 23:11:40      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:电影   软件   sts   font   html   nbsp   logs   对象   用户信息   

今日内容:

一、爬虫原理

二、Requests请求库

一、爬虫原理

1、什么是互联网?

互联网其实是由一堆网络设备(比如网线、路由器、交换机、防火墙等等...)与一台台的计算机连接而成,就像一张蜘蛛网一样。
2、互联网建立的目的

互联网的核心价值数据是存放在一台台计算机中的,而互联网是把计算机互联到一起,也就是说把一台台计算机中的数据都捆绑到一起了,目的就是为了能够方便每台计算机彼此之间数据的传递与数据的共享,否则你只能拿到U盘或者是移动硬盘去别人的计算机上拷贝数据了。

3、什么是数据?

例如京东淘宝商品信息等...

东方财富、雪球网等证券投资信息...

链家、自如等房源信息...

12306
4、上网的全过程:

1普通用户获取数据的方式:
浏览器提交请求 ---> 下载页面代码 ---> 解析/渲染成页面。

2爬虫程序获取数据的方式:
模拟浏览器发送请求 ---> 下载页面代码 ---> 只提取有用的数据 ---> 存放于数据库中或文件中。

普通用户与爬虫程序的区别:
普通用户:  普通用户是通过打开浏览器访问网页,浏览器会接收所有的数据。

 爬虫程序:  爬虫程序只提取网页代码中对我们有价值的数据。

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

http协议的请求.

-客户端:

浏览器是一个软件-->客户端的IP和端口

-服务器

www.jd.com(域名)-->DNS解析-->服务器的Ip和端口

http+ssl://jd.com

客户端的IP和端口-->服务器的IP和端口发送请求可以建立连接获取相应数据。

6、爬虫全过程

-发送请求(需要请求库:requests请求库、Selenium请求库)

-获取响应数据(只要往服务器发送请求、请求通过后会返回响应数据)

-解析并提取数据 (需要解析库:re.beautifulSoup4Xpath...

-保存到本地 (文件处理,数据库,MongoDB存储库)

二、requests请求库

1、安装与使用

-打开cmd

-输入:pip3 install requests

 

‘‘‘

1、响应状态

    200:代表成功

    301:代表跳转

    404:文件不存在

    403:权限

    502:服务器错误

 

2、响应头: Respone header

    set-cookie:可能有多个,是来告诉浏览器,把cookie保存下来。

    

3、网页源代码: preview

    最主要的部分,包含了请求资源的内容,如网页html、图片和二进制数据等。



‘‘‘

2.爬取视频

 

3.抓包分析

 

      打开浏览器的开发者模式(检查) ----> 选中network找到访问的页面后缀xxx. html (响应文本)

 

      1)请求url (访问的网站地址)

  2)请求方式:

      GET:

      直接发送请求获取数据

      https://ww. cnb logs. com/ kermitjam/art icles/ 9692597.html

  POST:

      需要携带用户信息往目标地址发送请求

https://www. cnblogs. com/ Login

      3)响应状态码:

      2xx:成功

    3xx:重定向

      4xx:找不到资源5xx:服务器错误

      4)请求头信息:

      User-Agent:用户代理(证明是通过电脑设备及浏览器发送的请求)Cookies:登录用户真实信息(证明你目标网站的用户)

 Referer:上一 次访问的url (证明你是从目标网站跳转过来的)

      5 )请求体:

      POST请求才会有请求体。

Form Data

{

 

POST:

需要携带用户信息发送到目标地址

https://www.cnblogs.com/login

{

‘user’:’tank’,

‘pwd’:’123’

}

# # import requests #导入request请求库
# # #往百度主页发送请求,获取响应对象
# # response=requests.get(url=‘http://www.baidu.com/‘)
# # #设置字符编码为utr-8
# # response.encoding=‘utf-8‘
# # #打印响应文本
# # print(response.text)
# # #把响应文本写入本地
# # with open(‘baidu.html‘,‘w‘,encoding=‘utf-8‘)as f:
# #  f.write(response.text)
# # 视频选项
# # 1梨视频
# import requests
#
# response = requests.get(‘https://video.pearvideo.com/mp4/adshort/20190625/cont-1569974-14053625_adpkg-ad_hd.mp4‘)
# print(response.content)
# # 保存视频到本地
# with open(‘视频.mp4‘, ‘wb‘)as f:
#     f.write(response.content)
import requests
import re  # 正则,用于解析文本模块

# 1、先往梨视频主页发送请求
response = requests.get(‘https://www.pearvideo.com/‘)
#print(response.text)
# re正则匹配获取所有视频id
# 参数1:正则匹配规则
# 参数2:解析文本
# 参数3:匹配模式
res_list = re.findall(‘<a href="video_(.*?)"‘, response.text, re.S)
#print(res_list)
#拼接每一个视频详情页url
for v_id in res_list:
    detail_url = ‘https://www.pearvideo.com/video_‘ + v_id
    #print(detail_url)

#对每一个视频详情页发送请求获取数据
response=requests.get(url=detail_url)
video_url=re.findall(‘srcUrl="(.*?)"‘,response.text,re.S)[0]
print(video_url)
video_name=re.findall(‘<h1 class="video-tt">(.*?)</h1>‘,response.text,re.S)[0]
print(video_name)
v_response=requests.get(video_url)
with open(‘%s.mp4‘ % video_name,‘wb‘)as f:
    f.write(v_response.content)
    print(video_name,‘视频爬取完成‘)

 

四、爬取豆瓣电影

 

      .:从当前位置开始*:  查找所有

 

      ?:找到第一个不找

 .*?:非贪婪匹配.*:贪婪匹配

 

      (.*?):提取括号内的数据

 

      电影排名、电影url、电影名称、导演-主演-类型、电影评分、评价人数、电影简介<div class="item">.*?<em class="">( .*?)</ em>

 

      .*?<a href="(.*?)">.*?<span class="title">(.*?)</span>

 

      .*?导演:(.*?)</p>.*?<span class="rating_ num.*?>( .*?)</span>.*?<span>(.*?)人评价</span> .*?<span class=" inq">(.*?)</span>

# 1、发送请求
# 2.解析数据

# 3.保存数据
# https://movie.douban.com/top250?start=50&filter=
# https://movie.douban.com/top250?start=125&filter=
# https://movie.douban.com/top250?start=150&filter=

import requests
import re

def get_page(base_url):
    response = requests.get(base_url)
    return response

def parse_index(text):
    res = re.findall(‘<div class="item">.*?<em class="">( .*?)</em>.*?<a href="(.*?)">.‘
    return res
def save_ data(data):
    with open(‘douban.txt‘, ‘a‘, encoding=‘utf-8‘) as f:
    f.write(data)

 

 

 

03python爬虫

标签:电影   软件   sts   font   html   nbsp   logs   对象   用户信息   

原文地址:https://www.cnblogs.com/wzqzqw/p/11094433.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!