python爬取数据总结_2020-10-23Python——网页数据爬取知识总结
一.爬虫请求方法
1.模块名:urllib.resquest
2.导入的方式:
import urllib.resquest
from urllib import request
3.使用的方法
req = request.Request(url,headers=headers)
res = request.urlopen(req)
html = res.read().decode('utf-8')
其中的方法的详解:
方法:
urllib.resquest->向网站发起请求、
request.urlopen->获取相应的响应对象,其也可以理解为将我们所需要的URL打开
res.read()->获取相应的网页的内容
参数:
URL:需要爬取的URl地址
timeout:设置等待超时的时间,指定时间内未响应应该抛出异常。
response(响应对象)的方法:
就是我们对于获取的response对象进行相应的操作
1.response.getcode->获取我们的相应的对象状态码
值得注意的是:其中状态码为200时>才表示网页可以正常的访问。
2.response.read()->返回相应的html
3.response.info()->获得头部的信息
4.response.geturl->获取对象相应的url
值得注意的是:其中状态码为200时才表示网页可以正常的访问。这样的话我们可以设置try语句,在其中设置获取我们的相应状态码的方法,可以抓取相应的错误
其中URL就是你的IE地址栏上的那串字符,比如说https://www.jianshu.com/
这样导入的好处:
其实我们完全的可以使用urlopen的方法实现最基本的请求的发起。如果请求中需要加入headers(请求头)等信息,可以使得我们模拟成为一个浏览器进行访问。我们就可以利用更强大的Request类来构建一个请求。
浏览器输入网址——F12——查看network——左边浏览器——查看headers头部
例如:
import urllib.request
url="https://blog.csdn.net/qq_36411874/article/details/83615704"
req=urllib.request.Request(url)
#实现浏览器模式
req.add_header("User-Agent"," Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36")
data=urllib.request.urlopen(req).read()
注意其中的urlopen的用法:
我们可以直接的从urllib2之中导入其方法,注意和上面的使用的区别
from urllib2 import urlopen
doc = urlopen("http://www.baidu.com").read()
print doc
爬取操作的另一种方法:
其中直接的使用requests模块:
导入的方式:
from urllib import request
from urllib.request import urlopen
使用方法:
res = requests.get(url,data)
res.read()
详解:
requests.get()->方法直接对相应的网页进行访问申请并且返回相应的响应对象
res.read()->返回网页之中的内容
其中的data参数表示提交到URL的数据所使用的方式,若是提供一个打他数据,会使用post请求的方式,若是为空表示使用get请求的方式,我们在使用时一般设置为None。而且打他在使用之前需要使用urllib.parse.urlencode()函数将其转化为数据流。
二.encoding-字符串编码:
在我们读写文件的时候,或者需要明确的指出所需要的编码的方式:获取我们的爬取的对象的之后,需要对其之中的内容进行获取。就是总之需要设置他的编码方式的时候。
其中Unicode-编码的基础类型:
Unicode
是一种标准,包括了字符集、编码方案等。因为ASCII码只能编码英文字符,具有很大的局限性,而Unicode 为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求2。在https://unicode-table.com/en/可以查到所有的Unicode字符。
UTF - 8
表示以字节为单位对Unicode进行编码
UTF - 16
以十六位无符号的整数为单位。
UTF - 32
表示以32位无符号整数为单位
gbk
GBK是采用单双字节变长编码,英文使用单字节编码,完全兼容ASCII字符编码,中文部分采用双字节编码。
decoding
其中decode()表示将“字节流”按照某种规则转换为“文本”,可以理解为encode逆过程
三.Example
"""
# @Time : 2020/4/16
# @Author : JMChen
"""
import requests
from urllib import request
import re
from urllib.request import urlopen
url = 'http://www.swu.edu.cn/xxgl_msfc.html'#修改
respond = requests.get(url)
respond.encoding = 'gb2312'#
p = re.compile('.html" target="_blank">([\u4e00-\u9fa5][\u4e00-\u9fa5\\s]+)')#创建抓取的规则
every_name = p.findall(respond.text) #修改
every_num = re.findall('', respond.text)#修改
i=1
info=list(zip(every_num,every_name))
##for x in info:
## i=i+1
## print(x)
##print("sum=",i)
count = 1
#print(type(info))
for man in info[:2]:
man_url = 'http://www.swu.edu.cn/xywh/msfc/{}.html'.format(man[0]) #修改
man_respond = requests.get(man_url)
man_respond.encoding = 'gb2312'
#text1 = re.findall('
', man_respond.text, re.S) #有一个参数为re.S表示“.”(不包含外侧双引号,下同)的作用扩展到整个字符串,包括“\n”。
text1 = re.findall('
', man_respond.text, re.S)#抓取相应网页的内容
text2 = re.sub(r'
| | |
|
|', '', text1[0]).strip() #过滤含有
| | |
的符号 使用空格替换掉
#print(text2)
file_name = man[1]#提取相应的网页之中的名字
with open(file_name+'.txt', mode='a+', encoding="utf-8") as f:
f.write('{}. '.format(count) + text2 + '\n')
count += 1
photo = r'
result = re.findall(photo, man_respond.text, re.I)#有一个参数为re.I表示大小写不敏感
print(result[0][2])
if result:
picurl = r'http://www.swu.edu.cn/xywh/msfc/{0}'.format(result[0][2])
print(picurl)
with open(file_name + '.jpg', 'wb') as fpic:
fpic.write(urlopen(picurl).read())
python爬取数据总结_2020-10-23Python——网页数据爬取知识总结相关推荐
- 爬虫爬取黑马程序员论坛的网页数据
#引入requests库 import requests #根据url发起请求,获取服务器响应文件 url:待抓取的url def load_page(url):#这里的请求头header可以是任意一 ...
- php接收vb post数据,VB Post方式提取网页数据
Public Function getDataAsHtml(ByVal url As String, ByVal postData As String, ByVal modifyCook As Boo ...
- 【Python爬虫】5行代码破解验证码+网页数据爬取全步骤详细记录
文章目录 前言 一.抓包分析 二.编写模块代码 1.引入库 2.获取验证码图片 3.识别验证码 4.爬取列表页 5.爬取详情页 6.完整代码 总结 1.TIPS 2.如需交流,可在代码头找到我,或者用 ...
- 多串口接收数据并显示-自定义串口通信类-调用委托显示数据-保存数据-实例:10串口接收数据并显示加保存
当时搜了很久,没咋都到合适的思路,就自己整理一份吧 大致实现的功能: 通过串口接收数据,进行解析,然后显示,或者保存数据: 主要:多个串口接收显示都能用: 大致思路: 1.新建一个类SerialPor ...
- 当网页数据到达用户计算机,当网页数据到达用户计算机时,数据进行转换步骤是()...
[填空题]刚死的鱼体,肌肉柔软而富有弹性,放置一段时间后,肌肉收缩变硬,失去伸展性或弹性,这种现象称之为( ) [判断题]蚕头雁尾是隶书的典型特征 [判断题]7 .增值税扣缴义务发生时间为扣缴义务人扣 ...
- Python爬虫之XPath基础教程:用代码抓取网页数据
Python爬虫之XPath基础教程:用代码抓取网页数据 在网络时代,网页数据是获取信息和进行分析的最重要的来源之一.Python的爬虫技术让我们可以轻松抓取网页数据,并进行数据处理.XPath是一种 ...
- cookie追加数据_集算器 SPL 抓取网页数据
[摘要] 集算器 SPL 支持抓取网页数据,根据抓取定义规则,可将网页数据下载到在本地进行统计分析.具体定义规则要求.使用详细情况,请前往乾学院:集算器 SPL 抓取网页数据! 网站上的数据源是我们进 ...
- 收集并简单清洗网页数据
1.数据的初步爬取 2.准备 Python中一般使用UTF-8编码格式 ·ascii码的使用 ·gbk(转换为字节码以计算机可以理解的方式进行存储) b':字节码 \x:以十六进制存放 ba\xba ...
- 如何删除第一张单页_如何用PowerBI导入网页数据
作者: 东军 相信很多朋友被PBI颜值吸引而入了坑,迫切想上手,但往往会卡在数据源环节.本公司数据自己没权限,外公司数据可望不可及,而网络社区里提供的练习数据,往往专业性太强,业务逻辑摸不透,分析更是 ...
- 【数据可视化】数据之美---揭密优雅的数据解决方案背后的故事
有时抛弃一些数据会使可视化效果更美丽. 在寻找设备方面,第一,如果要为数据可视化寻找设备,那么要找遍每个地方.有很多令人兴奋的传感技术被开发出来但却从来未被使用过.如果你准备启动一个可视化项目,首先在 ...
最新文章
- 爱奇艺火爆的背后,个性化推荐排序是如何配合的?
- 最新OCR开源神器来了!
- [JS] - onmusewheel事件(兼容IE,FF,opera,safari,chrome)
- 【Tomcat】Tomcat性能分析
- dedecms批量删除文档关键词可以吗
- Spring Security使用Hibernate实现自定义UserDetails
- 华为推出业界首个分布式云原生产品:华为云UCS,持续创新,深耕数字化
- 继续完善掼蛋游戏 其次说说朋友的情况
- HDU 1162 Eddy's picture (最小生成树)(java版)
- Django 报错 ‘polls‘ is not a registered namespace
- 油猴安装使用[自留]
- PHP获取数组中重复数据
- FreeRTOS 教程指南 学习笔记 第四章 队列管理
- 高端物理学名词_物理专业名词
- STM32CubeMX学习笔记(26)——SDIO接口使用(读写SD卡)
- python图像文字识别算法_Python图像处理之图片文字识别功能(OCR)
- 思维导图之----javascript正则表达式知识树
- 英语语法之后缀决定词性
- HI3861学习笔记(12)——GPIO输入接口使用
- 诺贝尔奖创纪录最高龄获奖者97岁
热门文章
- 产品经理基本功——表单设计
- 【系统篇 / 配置】❀ 01. 修改计算机名 ❀ Windows Server 2016
- Cisco-SRWE-第2层安全和WLAN考试测试题
- 内存分配---kmalloc
- 数字图像处理二维码识别 python+opencv实现二维码实时识别
- matlab半波整流怎么做,单相半波整流电路matlab仿真..ppt
- 考研数据结构之线性表(1.7)——练习题之A和B两个顺序表中相同元素组成一个新的从大到小的有序顺序表C的算法(C表示)
- Win10 电脑无法连接另外一台电脑的共享打印机提示Windows无法连接到打印机,拒绝访问
- OSI七层模型中各层协议及作用
- 虚拟机中安装IDEA教程