ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

03python爬虫

2019-06-26 23:00:45  阅读:252  来源: 互联网

标签:请求 url 03python 爬虫 re requests com response


今日内容:

一、爬虫原理

二、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.beautifulSoup4、Xpath...)

-保存到本地 (文件处理,数据库,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)

 

 

 

标签:请求,url,03python,爬虫,re,requests,com,response
来源: https://www.cnblogs.com/wzqzqw/p/11094433.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有