大创项目前传——爬虫阶段(1)

爬虫原理

网络爬虫指按照一定的规则(模拟人工登录网页的方式),自动抓取网络上的程序。简单的说,就是讲你上网所看到页面上的内容获取下来,并进行存储。
爬虫的过程简而言之,从开发者所确定的url出发,通过分析在当前url获取的数据中找出类似的url,从而进行访问,继续获取数据。如此重复,即可以通过不断地访问url获得所有想要的数据。

前期准备

编译器

采用pycharm编译环境,使用python语言进行项目的开发。

urllib—指定URL,获取网页数据
BeautifulSoup—网页解析,获取数据
re—正则表达式,主要用来匹配文字信息,抓取需要的数据
目前所用库为此三种,后续有需要再进行添加。

urllib库的基本使用

urllib是最最基本的请求,属于python内置的http请求库,通过所要发起请求的链接,及提供一些相关的参数,可以进行访问和解析。
基本分为三个模块:
urllib.request—请求模块(主要)
urllib.error—异常处理模块
urllib.parse—解析模块
1、request模块
urlopen(url,data,timeout…)方法
url可以是字符串

#url可以是字符串
import urllib.request

resp = urllib.request.urlopen('http://www.baidu.com')
print(resp.read().decode('utf-8'))  # read()获取响应体的内容,内容是bytes字节流,需要转换成字符串

url可以是Request对象

##url可以是Request对象
import urllib.request
//将要访问的url封装成对象
request = urllib.request.Request('http://httpbin.org')
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8')

data参数:主要用于post请求
注:关于get请求和post请求的异同可查阅
HTTP中的get与post方法相同与区别

# coding:utf8
import urllib.request, urllib.parse
//转化为字节流进行访问。post请求需要发送数据,这里封装了{'word','hello'}。
data = bytes(urllib.parse.urlencode({'word': 'hello'}), encoding='utf8')
resp = urllib.request.urlopen('http://httpbin.org/post', data=data)
print(resp.read())

timeout参数:设置请求超时的时间
在后续爬虫的过程中,可能会有出现错误或被反爬导致超时的现象。

# coding:utf8
#设置请求超时时间
import urllib.request

resp = urllib.request.urlopen('http://httpbin.org/get', timeout=0.1)
print(resp.read().decode('utf-8'))

url的分析

以豆瓣Top250网页为例

访问https://movie.douban.com/top250?start=0
即豆瓣Top250首页,自然电影是从编号1开始的
在这里插入图片描述
那么再点击下一页之后,我们发现该页面上的电影从编号26开始。
在这里插入图片描述
这时通过观察网页链接,发现其变化与编号有亲密的联系,此时的网页链接为https://movie.douban.com/top250?start=25

那么分析猜想,是不是直接访问start=32的链接,所得到的网页第一个电影编号是33呢?
答案是肯定的,这里不再贴图。

如此,我们就可以通过一个初始url=(https://movie.douban.com/top250?start=25),将其封装为字符串对象,不断的对start=?的字符进行更改,就可以达到访问所有网页的目的。

Chrome开发者工具的使用

Google浏览器为我们提供了强大的功能,我们可以通过F12进入Chrome开发者工具。通过Elements栏可以对网页的信息进行定位,从而很快速的找到我们所要的数据在网页代码的哪一块。为后续的信息提取提供极大的便利。
在这里插入图片描述

一个错误

兴高采烈的直接使用urlopen(url)进行访问请求

import urllib.request
reponse = urllib.request.urlopen('https://movie.douban.com/top250?start=0&filter=')
print(reponse.read().decode('utf-8'))

程序出现了报错在这里插入图片描述
HTTP Error 418 错误,是典型的被反爬。因为我们直接采用urlopen进行get访问请求,并没有对自身作任何的伪装。也就是说,我们直接告诉了对方我们是一个爬虫软件,想窃取你的网页信息,这么直白的请求,肯定是被打回的了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值