2021-4-28 爬虫学习 Beautiful Soup 、 Urllib

4.28日记录第一天学习爬虫

使用大数据实验室平台进行练习(学习日记)

大二在校生,根据指导老师的意见,使用学校搭建的平台练习爬虫。针对第一天学习过程中遇到的问题进行上网查阅并总结,遇到的是一些比较基础的知识。知识参考的来源已给出,侵权删。

记录学习过程中遇到的新知识(应该是常用的工具)

什么是Beautiful Soup:
是 python 的一个库,最主要的功能是从网页抓取数据。 Beautiful Soup 提供一些简单的函数用来处理导航、搜索、修改分析树等功能。因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
Beautiful Soup 3 目前已经停止开发,推荐在现在的项目中使用 Beautiful Soup 4,不过它已经被移植到 BS4 了,也就是说导入时我们需要 import bs4 :

from bs4 import BeautifulSoup
【参考来自:】https://cuiqingcai.com/1319.html

什么是Urllib?【参考来自:】https://www.cnblogs.com/zhaof/p/6910871.html
Urllib是python内置的HTTP请求库,包括以下模块↓:

·urllib.request 请求模块
·urllib.error 异常处理模块
·urllib.parse url解析模块
·urllib.robotparser robots.txt解析模块

urlopen

·url参数的使用

import urllib.request

response = urllib.request.urlopen('http://www.baidu.com')
print(response.read().decode('utf-8'))

urlopen一般常用的有三个参数,它的参数如下: urllib.requeset.urlopen(url,data,timeout)
response.read()可以获取到网页的内容,如果没有read(),将返回如下内容……(??这里没看懂返回什么内容,略过先

·data参数的使用:

import urllib.parse
import urllib.request

data = bytes(urllib.parse.urlencode({'word': 'hello'}), encoding='utf8')
print(data)
response = urllib.request.urlopen('http://httpbin.org/post', data=data)
print(response.read())

这里就用到urllib.parse,通过**bytes(urllib.parse.urlencode())**将post数据进行转换放到urllib.request.urlopen的data参数中。这样就完成了一次post请求。

笔记:
parse
v. (对句子)作语法分析; 作句法分析;
[例句]Research on method of syntax parsing based on statistical approach;
论述了英汉机器翻译中句法分析的设计与实现方法。

所以如果我们添加data参数的时候就是以post请求方式请求,如果没有data参数就是get请求方式

·timeout参数的使用
在某些网络情况不好或者服务器端异常的情况会出现请求慢的情况,或者请求异常,所以这个时候我们需要给
请求设置一个超时时间,而不是让程序一直在等待结果。

import urllib.request

response = urllib.request.urlopen('http://httpbin.org/get', timeout=1)
print(response.read())

运行之后我们看到可以正常的返回结果,接着我们将timeout时间设置为0.1
运行程序会提示错误:time out
对异常进行抓取(有待学习),代码更改为

import socket
import urllib.request
import urllib.error

try:
    response = urllib.request.urlopen('http://httpbin.org/get', timeout=0.1)
except urllib.error.URLError as e:
    if isinstance(e.reason, socket.timeout):
        print('TIME OUT')

响应
响应类型、状态码、响应头

import urllib.request

response = urllib.request.urlopen('https://www.python.org')
print(type(response))

来自:
[1]:[https://cuiqingcai.com/1319.html
[2]: https://www.cnblogs.com/zhaof/p/6910871.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S1901

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值