一、认识网页结构

网页一般由三部分组成,分别是:

  1. HTML(超文本标记语言);
  2. CSS(层叠样式表);
  3. JScript(活动脚本语言)。

1.HTML
HTML 是整个网页的结构,相当于整个网站的框架。带“<”、“>”符号的都是属于 HTML 的标签,并且标签都是成对出现的。
常见的标签如下:

.. 表示标记中间的元素是网页 .. 表示用户可见的内容

..

表示框架

..

表示段落

  • ..
  • 表示列表 ..表示图片

    ..

    表示标题 ..表示超链接

CSS
CSS 表示样式,图 1 中第 13 行<style type="text/css">表示下面引用一个 CSS,在 CSS 中定义了外观。

JScript
JScript 表示功能。交互的内容和各种特效都在 JScript 中,JScript 描述了网站中的各种功能。

如果用人体来比喻,HTML 是人的骨架,并且定义了人的嘴巴、眼睛、耳朵等要长在哪里。CSS 是人的外观细节,如嘴巴长什么样子,眼睛是双眼皮还是单眼皮,是大眼睛还是小眼睛,皮肤是黑色的还是白色的等。JScript 表示人的技能,例如跳舞、唱歌或者演奏乐器等。

二、使用 requests 库请求网站

网页请求的过程分为两个环节:
1.Request (请求):向服务器发送访问请求。
2.Response(响应):向用户(客户端)发送响应的内容。

网页请求的方式也分为两种:
1.GET:最常见的方式,一般用于获取或者查询资源信息,也是大多数网站使用的方式,响应速度快。
2.POST:相比 GET 方式,多了以表单形式上传参数的功能,因此除查询信息外,还可以修改信息。
1.get方式

import requests        #导入requests包
url = 'http://www.cntour.cn/'#定义URL
strhtml = requests.get(url)        #Get方式获取网页数据
print(strhtml.text)# 打印响应内容res.encoding = res.apparent_encoding#指定编码如,res.encoding='gb2312'
print(res)  # <Response [200]>  200代表状态码
# print(res.text)  # 返回响应文本,str字符串类型
# print(res.encoding)  # requests库认为的编码方式 ISO-8859-1
# print(res.content)  # 返回响应源码,bytes类型
# print(res.content.decode('utf-8'))  # 把响应的bytes源码转为str类型
# print(res.status_code)  # 当前请求的响应码
# print(res.request.headers)  # 查看请求的请求头
# print(res.headers)  # 查看响应头
# print(res.request.cookies)  # 查看请求的cookie
# print(res.cookies) # 查看响应的cookies

注意: 如果response.text有乱码解决办法:

response.content.decode()
response.content.decode(‘gbk’)
response.content.decode(‘unicode_escape’)

response = requests.get(url,timeout=3)#  请求如果在规定时间之内(3秒钟内)没有得到响应,就会抛出超时错误

response.text返回的类型是str
response.content返回的类型是bytes,可以通过decode()方法将bytes类型转为str类型
推荐使用:response.content.decode()的方式获取相应的html页面

response.text
解码类型:根据HTTP头部对响应的编码做出有根据的推测,推测的文本编码
如何修改编码方式:response.encoding = ‘gbk’
response.content
解码类型:没有指定
如何修改编码方式:response.content.decode(‘utf8’)

2.post

import requests        #导入requests包
import json
def get_translate_date(word=None):url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'From_data={'i':word,'from':'zh-CHS','to':'en','smartresult':'dict','client':'fanyideskweb','salt':'15477056211258','sign':'b3589f32c38bc9e3876a570b8a992604','ts':'1547705621125','bv':'b33a2f3f9d09bde064c9275bcb33d94e','doctype':'json','version':'2.1','keyfrom':'fanyi.web','action':'FY_BY_REALTIME','typoResult':'false'}#请求表单数据response = requests.post(url,data=From_data)#将Json格式字符串转字典content = json.loads(response.text)print(content)#打印翻译后的数据#print(content['translateResult'][0][0]['tgt'])
if __name__=='__main__':get_translate_date('我爱中国')

三、BeautifulSoup解析

from bs4 import BeautifulSoupsoup=BeautifulSoup(strhtml.text,'lxml')
data = soup.select('#main>div>div.mtop.firstMod.clearfix>div.centerBox>ul.newsList>li>a')
print(data)

四、清洗和组织数据

for item in data:result={'title':item.get_text(),'link':item.get('href')}
print(result)

五、爬虫攻防

1.在 Request headers 中构造浏览器的请求头,封装自己。

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
response = request.get(url,headers=headers)

2.增设延时
2-1.设置 3 秒钟抓取一次

import time
time.sleep(3)

2-2.在数据采集时经常使用代理。
首先,构建自己的代理 IP 池,将其以字典的形式赋值给 proxies,然后传输给 requests,

proxies={"http":"http://10.10.1.10:3128","https":"http://10.10.1.10:1080",
}
response = requests.get(url, proxies=proxies)

六、设置代理

代理IP的分类
根据代理ip的匿名程度,代理IP主要可以分为下面三类:

1.透明代理(Transparent Proxy):透明代理虽然可以直接“隐藏”你的IP地址,但是还是可以查到你是谁。
2.匿名代理(Anonymous Proxy):使用匿名代理,别人只能知道你用了代理,无法知道你是谁。
3.高匿代理(Elite proxy或High Anonymity Proxy):高匿代理让别人根本无法发现你是在用代理,所以是最好的选择。

来这里分享几个代理获取的好地方;

http://ip.kxdaili.com/ 开心代理
https://proxy.mimvp.com/free.php 米扑代理
http://www.xiladaili.com/ 西拉免费代理IP
http://ip.jiangxianli.com/ 免费代理IP库
http://www.superfastip.com/ 极速代理
https://proxy.mimvp.com/free.php 米扑代理
http://www.shenjidaili.com/open/ 神鸡代理IP
http://31f.cn/http-proxy/ 三一代理
http://www.feiyiproxy.com/?page_id=1457 飞蚁代理
http://ip.zdaye.com/dayProxy/2019/4/1.html 站大爷
http://www.66ip.cn 66免费代理网
https://www.kuaidaili.com/free/inha 快代理
https://www.xicidaili.com 西刺
http://www.ip3366.net/free/?stype=1 云代理
http://www.iphai.com/free/ng IP海
http://www.goubanjia.com/ 全网代理
http://www.89ip.cn/index.html 89免费代理
http://www.qydaili.com/free/?action=china&page=3 旗云代理

proxy = {'http': "125.108.108.165:9000"
}response = requests.get(url, proxies=proxy)

七、requests处理cookie的方法

使用requests处理cookie有三种方法:

1.cookie字符串放在headers中

import requests
url = "http://www.renren.com/972035912/newsfeed/photo"
headers = {"cookie的name":"cookie的value"
}#  使用cookie来实现模拟登陆, 在请求头中定义登陆后的cookie,代入到请求中
response = requests.get(url, headers=headers)
print(response.text)

2.把cookie字典放传给请求方法的cookies参数接收

cookie_dict = {"cookie的name":"cookie的value"} # 登陆后的cookies,同上
requests.get(url,headers=headers,cookies=cookie_dict}

3.使用requests提供的session模块

import requests
url = "http://www.renren.com/PLogin.do"
data = {"email": "xxxxx","password": "xxxxx"
}#  构造formdata,填写自己的账号和密码
session = requests.Session()#  session的使用: 在请求之前创建session对象
session.post(url, data=data)#  后续的请求都由session来发起,因为session中保存了用户的登陆信息
response = session.get("http://www.renren.com/972035912/newsfeed/photo")#  使用session请求登陆后的界面
print(response.text)

Python爬虫、数据清洗与可视化-2 -requests相关推荐

  1. python爬取淘宝商品做数据挖掘_Python 3爬虫 数据清洗与可视化实战 Python数据抓取技术 python3网络爬虫教程书籍 运用Python工具获取电商平台页面数据挖掘书籍...

    A8 书    名:Python 3爬虫 数据清洗与可视化实战 作 译 者:零一,韩要宾,黄园园 出版时间:2018-03 千 字 数:200 版    次:01-01 页    数:212 开   ...

  2. Python爬虫以及数据可视化分析

    Python爬虫以及数据可视化分析之Bilibili动漫排行榜信息爬取分析 简书地址:https://www.jianshu.com/u/40ac87350697 简单几步,通过Python对B站番剧 ...

  3. Python爬虫+数据分析+数据可视化(分析《雪中悍刀行》弹幕)

    Python爬虫+数据分析+数据可视化(分析<雪中悍刀行>弹幕) 哔哔一下 爬虫部分 代码部分 效果展示 数据可视化 代码展示 效果展示 视频讲解 福利环节 哔哔一下 雪中悍刀行兄弟们都看 ...

  4. 手把手带你飞Python爬虫+数据清洗新手教程(一)

    本文共有2394字,读完大约需要10分钟. 目录 简介 思考 撸起袖子开始干 1 获取网页源代码 2 在网页源代码里找出所需信息的位置 3 数据清洗 4 完整代码 5 优化后的代码 简介 本文使用An ...

  5. python爬虫及数据可视化分析

    python爬虫及数据可视化分析 1.前言 2.数据爬取 2.1定位到爬取数据 2.2爬虫实现方法 3.数据可视化分析 3.1将短文学网的各类文章做一个统计 3.2对某一类文章进行分析 1.前言 本篇 ...

  6. python爬虫用urllib还是reques,python爬虫中urllib.request和requests有什么区别?

    在学习python爬虫,想要检索request相关内容时,往往会出现urllib.request和requests这两个词,urllib.request和requests都是python爬虫的模块,其 ...

  7. python 爬虫及数据可视化展示

    python 爬虫及数据可视化展示 学了有关python爬虫及数据可视化的知识,想着做一些总结,加强自己的学习成果,也能给各位小伙伴一些小小的启发. 1.做任何事情都要明确自己的目的,想要做什么,打算 ...

  8. python 爬虫与数据可视化

    python 爬虫与数据可视化 1.引言 Web已经成为日新月异迅速发展的网络信息技术中的信息载体,如何有效地提取和利用搜索引擎获得互联网最有用的.可以免费公开访问的数据集,查找用户所需的价值数据或者 ...

  9. 为什么要学习Python爬虫与数据可视化?

    提到Python爬虫与数据可视化,我们都不陌生.因为我们早已身在大数据驱动的时代,数据分析已然成为了一项必备技能.可能有人会问,为什么要学习Python爬虫与数据可视化? 答案是显而易见的,无论是出于 ...

  10. 2021-09-01 学习笔记:Python爬虫、数据可视化

    2021-09-01 学习笔记:Python爬虫.数据可视化 结于2021-09-07: 内容来自 成都工业大学 数字媒体专业实训: 主要内容: PyCharm开发Python脚本的基础配置: Pyt ...

最新文章

  1. 3升和5升的不规则容器怎样量出4升的水
  2. 17、uwp 打包失败记录
  3. 内核对象——Windows核心编程学习手札系列之三
  4. 结构主题模型(一)stm包工作流
  5. Invoice校验差异处理
  6. javafx css_JavaFX技巧13:研究Modena CSS文件
  7. PyQt安装和环境配置
  8. 30岁的我们还能做什么?
  9. 锁仓怎么解_期货如何锁仓,解锁以及锁仓的好处
  10. 计算机点击管理无效,我的电脑有任务管理器但是点击却没反应是怎么回事
  11. CKA 认证考试必过技巧分享
  12. 什么是MTTF、MTBF、MTRF?
  13. C语言各章学习心得,小节
  14. 一个命令就可启用的微信机器人WhoChat
  15. 计算机科学和python编程导论答案_2020年计算机科学与Python编程导论答案(智慧树)...
  16. 软件测试主管应具备的素质,软件测试人员应具备的素质
  17. 林轩田机器学习基石-Notes
  18. 在Mac环境下的NEO4J的下载与配置
  19. 剖析项目管理与Project 2007的关系
  20. EI会议推荐-计算机主题

热门文章

  1. 将excel文件转换为MemoryStream 流用于浏览器中下载
  2. 马尔可夫向量自回归模型,MSVAR模型,MS-VAR模型的GiveWin软件安装和操作过程+MS-VAR各种图形制作
  3. matlab做信号发生,声卡和Matlab的虚拟信号发生器的工作原理
  4. 2001-2022年全国各城市气温数据(逐日、逐月、逐年)
  5. 思科模拟器 | 交换机与路由器的配置汇总【收藏备用】
  6. 云原生开学‘第一课’
  7. 加密脱胎于去中心化理想,但力求合规 细数各国政府态度之演变
  8. tar、jar、war包打包解压
  9. ARM与单片机有啥区别?
  10. 【笔记】ArrayList.retainAll()方法解析