(以下是在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.request
url = "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())

运行结果:

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

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

得到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'

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

参考:

http://jecvay.com/2014/09/python3-web-bug-series1.html

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

Python爬虫(一)抓取指定的页面相关推荐

  1. Python爬虫:抓取智联招聘岗位信息和要求(进阶版)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:王强 ( 想要学习Python?Python学习交流群 ...

  2. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  3. Python爬虫采集抓取:Python3.x+Fiddler 采集抓取 APP 数据

    随着移动互联网的市场份额逐步扩大,手机 APP 已经占据我们的生活,以往的数据分析都借助于爬虫采集爬取网页数据进行分析,但是新兴的产品有的只有 APP,并没有网页端这对于想要提取数据的我们就遇到了些问 ...

  4. python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?

    原标题:初学者如何用"python爬虫"技术抓取网页数据? 在当今社会,互联网上充斥着许多有用的数据.我们只需要耐心观察并添加一些技术手段即可获得大量有价值的数据.而这里的&quo ...

  5. python抓取网页电话号码_利用正则表达式编写python 爬虫,抓取网页电话号码!...

    利用正则表达式编写python 爬虫,抓取网页联系我们电话号码!这里以九奥科技(www.jiuaoo.com)为例,抓取'联系我们'里面的电话号码,并输出. #!/usrweilie/bin/pyth ...

  6. python爬虫(抓取百度新闻列表)

    一.python请求要抓取的url页面 要抓取的url http://news.baidu.com/ ,先python模拟请求该url #!/usr/bin/python # -*- coding:u ...

  7. python抓取视频违法吗,科学网—【python爬虫】抓取B站视频相关信息(一) - 管金昱的博文...

    昨天我在B站上写了这么一篇文章,但是被他们锁住了.无奈之下我复制到知乎上先保存起来 在这篇名为<三天学会用python进行简单地爬取B站网页视频数据>文章中我主要提到了两点在已知aid的情 ...

  8. python爬虫_抓取瓦片图片信息并将其拼接_以mapbar为例(适用交通工程类专业)

    python爬虫_抓取瓦片图片信息并将其拼接_以mapbar为例(适用交通工程类专业) 这次就以mapbar为例爬取道路交通拥堵情况 第一步,瓦片标号解析 第二步,拼url,然后下载 第三步,图片拼接 ...

  9. python 爬虫 数据抓取的三种方式

    python 爬虫   数据抓取的三种方式 常用抽取网页数据的方式有三种:正则表达式.Beautiful Soup.lxml 1.正则表达式 正则表达式有个很大的缺点是难以构造.可读性差.不易适用未来 ...

  10. python爬虫定时抓取数据

    python爬虫定时抓取数据 from scrapy import cmdline import datetime import time def doSth(): # 把爬虫程序放在这个类中 shi ...

最新文章

  1. noip考python吗_青少年信奥联赛(NOIP)改名重推实锤!带着“不建议”硬刚到底?...
  2. ABAP ALV里日期类型的F4帮助
  3. Centos6.5部署大众点评CAT
  4. 链表反转的两种实现方法,后一种击败了100%的用户
  5. 实战Linux Bluetooth编程 (八) Class of Device
  6. [Bzoj1003][ZJOI2006]物流运输(spfa+dp)
  7. 如果Mac在播放音乐时遇到问题,没有声音或无法调整音量,该怎么办呢?
  8. 句柄即GetSafeHwnd的作用
  9. 为何现在只剩下 风吹乱我的发
  10. html页面会出现浏览器崩溃,Chrome浏览器所有页面全部崩溃解决办法。
  11. Android 第三方轮播图控件ConvenientBanner:通用的广告栏控件
  12. 使用kaminari实现分页
  13. macOS Big Sur 11.5.2 (20G95) 虚拟机 ISO 镜像
  14. [UWP]使用离散式关键帧播放动画
  15. Java IO流和装饰模式(Decorator)
  16. 亚马逊美国站12岁以下儿童产品 CPSIA测试标准
  17. CJJ爱编程之二----A+B
  18. C语言简单将一串英文字符加密
  19. 高效能管理之要事第一 时间管理表格4
  20. 2050的编程竞赛青年见面会感想

热门文章

  1. C/C++访问PostgreSQL数据库
  2. 清除windows的EFS加密
  3. 第0章 Oracle的安装及相关配置
  4. Mac版微信支持朋友圈了!微信内测版体验感
  5. 这样的高颜值网易云音乐,是你想要的吗?
  6. Android Gradle配置构建
  7. Spring(16)——使用注解进行bean定义
  8. enetics v1.5.0 绿色版
  9. ios7中的UILabel自适决定大小
  10. 在MACBook笔记本上通过Safari 访问EBS系统