一.爬虫请求方法

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——网页数据爬取知识总结相关推荐

  1. 爬虫爬取黑马程序员论坛的网页数据

    #引入requests库 import requests #根据url发起请求,获取服务器响应文件 url:待抓取的url def load_page(url):#这里的请求头header可以是任意一 ...

  2. php接收vb post数据,VB Post方式提取网页数据

    Public Function getDataAsHtml(ByVal url As String, ByVal postData As String, ByVal modifyCook As Boo ...

  3. 【Python爬虫】5行代码破解验证码+网页数据爬取全步骤详细记录

    文章目录 前言 一.抓包分析 二.编写模块代码 1.引入库 2.获取验证码图片 3.识别验证码 4.爬取列表页 5.爬取详情页 6.完整代码 总结 1.TIPS 2.如需交流,可在代码头找到我,或者用 ...

  4. 多串口接收数据并显示-自定义串口通信类-调用委托显示数据-保存数据-实例:10串口接收数据并显示加保存

    当时搜了很久,没咋都到合适的思路,就自己整理一份吧 大致实现的功能: 通过串口接收数据,进行解析,然后显示,或者保存数据: 主要:多个串口接收显示都能用: 大致思路: 1.新建一个类SerialPor ...

  5. 当网页数据到达用户计算机,当网页数据到达用户计算机时,数据进行转换步骤是()...

    [填空题]刚死的鱼体,肌肉柔软而富有弹性,放置一段时间后,肌肉收缩变硬,失去伸展性或弹性,这种现象称之为( ) [判断题]蚕头雁尾是隶书的典型特征 [判断题]7 .增值税扣缴义务发生时间为扣缴义务人扣 ...

  6. Python爬虫之XPath基础教程:用代码抓取网页数据

    Python爬虫之XPath基础教程:用代码抓取网页数据 在网络时代,网页数据是获取信息和进行分析的最重要的来源之一.Python的爬虫技术让我们可以轻松抓取网页数据,并进行数据处理.XPath是一种 ...

  7. cookie追加数据_集算器 SPL 抓取网页数据

    [摘要] 集算器 SPL 支持抓取网页数据,根据抓取定义规则,可将网页数据下载到在本地进行统计分析.具体定义规则要求.使用详细情况,请前往乾学院:集算器 SPL 抓取网页数据! 网站上的数据源是我们进 ...

  8. 收集并简单清洗网页数据

    1.数据的初步爬取 2.准备 Python中一般使用UTF-8编码格式 ·ascii码的使用 ·gbk(转换为字节码以计算机可以理解的方式进行存储) b':字节码 \x:以十六进制存放 ba\xba ...

  9. 如何删除第一张单页_如何用PowerBI导入网页数据

    作者: 东军 相信很多朋友被PBI颜值吸引而入了坑,迫切想上手,但往往会卡在数据源环节.本公司数据自己没权限,外公司数据可望不可及,而网络社区里提供的练习数据,往往专业性太强,业务逻辑摸不透,分析更是 ...

  10. 【数据可视化】数据之美---揭密优雅的数据解决方案背后的故事

    有时抛弃一些数据会使可视化效果更美丽. 在寻找设备方面,第一,如果要为数据可视化寻找设备,那么要找遍每个地方.有很多令人兴奋的传感技术被开发出来但却从来未被使用过.如果你准备启动一个可视化项目,首先在 ...

最新文章

  1. 爱奇艺火爆的背后,个性化推荐排序是如何配合的?
  2. 最新OCR开源神器来了!
  3. [JS] - onmusewheel事件(兼容IE,FF,opera,safari,chrome)
  4. 【Tomcat】Tomcat性能分析
  5. dedecms批量删除文档关键词可以吗
  6. Spring Security使用Hibernate实现自定义UserDetails
  7. 华为推出业界首个分布式云原生产品:华为云UCS,持续创新,深耕数字化
  8. 继续完善掼蛋游戏 其次说说朋友的情况
  9. HDU 1162 Eddy's picture (最小生成树)(java版)
  10. Django 报错 ‘polls‘ is not a registered namespace
  11. 油猴安装使用[自留]
  12. PHP获取数组中重复数据
  13. FreeRTOS 教程指南 学习笔记 第四章 队列管理
  14. 高端物理学名词_物理专业名词
  15. STM32CubeMX学习笔记(26)——SDIO接口使用(读写SD卡)
  16. python图像文字识别算法_Python图像处理之图片文字识别功能(OCR)
  17. 思维导图之----javascript正则表达式知识树
  18. 英语语法之后缀决定词性
  19. HI3861学习笔记(12)——GPIO输入接口使用
  20. 诺贝尔奖创纪录最高龄获奖者97岁

热门文章

  1. 产品经理基本功——表单设计
  2. 【系统篇 / 配置】❀ 01. 修改计算机名 ❀ Windows Server 2016
  3. Cisco-SRWE-第2层安全和WLAN考试测试题
  4. 内存分配---kmalloc
  5. 数字图像处理二维码识别 python+opencv实现二维码实时识别
  6. matlab半波整流怎么做,单相半波整流电路matlab仿真..ppt
  7. 考研数据结构之线性表(1.7)——练习题之A和B两个顺序表中相同元素组成一个新的从大到小的有序顺序表C的算法(C表示)
  8. Win10 电脑无法连接另外一台电脑的共享打印机提示Windows无法连接到打印机,拒绝访问
  9. OSI七层模型中各层协议及作用
  10. 虚拟机中安装IDEA教程