博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python爬虫(一)抓取指定的页面
阅读量:6071 次
发布时间:2019-06-20

本文共 1856 字,大约阅读时间需要 6 分钟。

(以下是在windows环境下的操作,python版本为3)

1.urllib库介绍

上的解释是:

urllib is a package that collects several modules for working with URLs

简单的说就是用来处理url的,它包含以下几个模块:

  • urllib.request
  • urllib.request,打开并且读取url
  • urllib.error,包含了一些urllib.request引起的异常
  • urllib.parse,解析url
  • urllib.robotparser,解析robots.txt文件

    2.request模块

The urllib.request module defines functions and classes which help in opening URLs (mostly HTTP) in a complex world — basic and digest authentication, redirections, cookies and more.

这里,只需用到urllib.request模块,request模块包含了一些函数,用来处理打开的url。

urlopen()

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

该函数主要的参数就是url,可以是一个字符串也可以是一个request对象。

函数返回一个可以作为文本管理器的对象,有如下方法:

  • geturl(),返回检索到的url资源,通常用于确定是否允许重定向
  • info(),返回页面的元信息,例如headers
  • getcode(),返回响应的http状态码

为了清楚这些函数的作用是什么,我们运行如下python代码:

import urllib.requesturl = "http://www.baidu.com"a = urllib.request.urlopen(url)print('----------type of a----------')print(type(a))print('----------geturl()----------')print(a.geturl())print('----------info()----------')print(a.info())print('----------getcode()----------')print(a.getcode())

运行结果:

1127799-20170429212825178-539992576.png

3.抓取百度上关键词的搜索结果

首先我们需要知道百度搜索的url,打开百度随便搜索一个词,就能在地址栏看到url

1127799-20170429212851584-269833793.png

得到url之后,剩下的就是对url进行爬取了,代码如下:

# coding=utf-8# Created by dockerchenimport urllib.requestdata = {}data['word'] = '网络安全'url_values = urllib.parse.urlencode(data)url = 'http://www.baidu.com/s?wd='full_url = url + url_valuesdata = urllib.request.urlopen(full_url).read()data = data.decode('utf-8')print(data)

urllib.parse.urlencode()可以将字符串转换为url格式的字符串,这里data进行转换后,我们可以得到wd=%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8的字符串。

要是只想对一个字符串进行urlencode转换,可以使用urllib.parse.quote(),例如:

>>> import urllib.parse>>> urllib.parse.quote('网络安全')'%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8'

上面代码的输出结果其实就是爬取的百度页面搜索结果的源代码,之后要做的事,就是对爬取到的东西进行处理,来获取我们想要的数据

参考:

转载于:https://www.cnblogs.com/dockerchen/p/6786350.html

你可能感兴趣的文章
tomcat多应用之间如何共享jar
查看>>
Flex前后台交互,service层调用后台服务的简单封装
查看>>
技术汇之物联网设备网关技术架构设计
查看>>
OSX10.11 CocoaPods 升级总结
查看>>
深入浅出Netty
查看>>
3.使用maven创建java web项目
查看>>
笔记本搜索不到某一AP广播的SSID,信道的原因
查看>>
基于Spring MVC的异常处理及日志管理
查看>>
MediaBrowserService 音乐播放项目《IT蓝豹》
查看>>
MySQL入门12-数据类型
查看>>
Windows Azure 保留已存在的虚拟网络外网IP(云服务)
查看>>
修改字符集
查看>>
HackTheGame 攻略 - 第四关
查看>>
js删除数组元素
查看>>
带空格文件名的处理(find xargs grep ..etc)
查看>>
华为Access、Hybrid和Trunk的区别和设置
查看>>
centos使用docker下安装mysql并配置、nginx
查看>>
关于HTML5的理解
查看>>
需要学的东西
查看>>
Internet Message Access Protocol --- IMAP协议
查看>>