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