一:抓取简单的页面:

用Python来做爬虫抓取网站这个功能很强大,今天试着抓取了一下百度的首页,很成功,来看一下步骤吧

首先需要准备工具:

1.python:自己比较喜欢用新的东西,所以用的是Python3.6,python下载地址:https://www.python.org/

2.开发工具:用Python的编译器即可(小巧),不过自己由于之前一直做得前端,使用的webstrom,所以选择JetBrains 公司的PyCharm,下载地址:https://www.jetbrains.com/zh/pycharm/specials/pycharm/pycharm.html?utm_source=baidu&utm_medium=cpc&utm_campaign=cn-bai-pro-pycharm-ex-pc&utm_content=pycharm-download&utm_term=pycharm%E4%B8%8B%E8%BD%BD

3.Fiddler -- 网页请求监控工具,我们可以使用它来了解用户触发网页请求后发生的详细步骤;(自行百度下载)

了解Python中urllib库

Python2系列使用的是urllib2,Python3后将其全部整合为urllib,

在2中:

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

urllib2.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

 3中是

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

urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

 #这个函数看起来接受很多的参数啊,不过很多我们平时不会用到,用到的url居多。

 很明显,我用后者

 简单爬虫代码

 

#encoding:UTF-8
import urllib.request url = "https://www.douban.com/ "
data = urllib.request.urlopen(url).read()
data = data.decode('UTF-8')
print(data)

效果如下:

二:抓取需要伪装浏览器的网站

但是一个小小的百度首页怎能满足我,于是我又想到了一些需要需要伪装浏览器才能抓取的网站,比如豆瓣,

1.伪装浏览器:

对于一些需要登录的网站,如果不是从浏览器发出的请求,则得不到响应。所以,我们需要将爬虫程序发出的请求伪装成浏览器正规军。
具体实现:自定义网页请求报头。

2.、使用Fiddler查看请求和响应报头

打开工具Fiddler,然后再浏览器访问“https://www.douban.com/”,在Fiddler左侧访问记录中,找到“200 HTTPS www.douban.com”这一条,点击查看其对应的请求和响应报头具体内容:

 3.进行访问:

import urllib.request

import ssl

ssl._create_default_https_context = ssl._create_stdlib_context

# 定义保存函数
def saveFile(data):
path = "F:\\pachong\\02_douban.out"
f = open(path, 'wb')
f.write(data)
f.close() # 网址
url = "https://www.douban.com/"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/51.0.2704.63 Safari/537.36'}
req = urllib.request.Request(url=url, headers=headers) res = urllib.request.urlopen(req) data = res.read() # 也可以把爬取的内容保存到文件中
saveFile(data) data = data.decode('utf-8')
# 打印抓取的内容
print(data) # 打印爬取网页的各类信息
print(type(res))
print(res.geturl())
print(res.info())
print(res.getcode())

我们来看这段代码:

import ssl

ssl._create_default_https_context = ssl._create_stdlib_context

这句是为了能获取到https而插入的代码,没他没法获取https

输出结果:

Python做简单爬虫(urllib.request怎么抓取https以及伪装浏览器访问的方法)的更多相关文章

  1. Python 3.X 要使用urllib.request 来抓取网络资源。转

    Python 3.X 要使用urllib.request 来抓取网络资源. 最简单的方式: #coding=utf-8 import urllib.request response = urllib. ...

  2. Python开发简单爬虫(二)---爬取百度百科页面数据

    一.开发爬虫的步骤 1.确定目标抓取策略: 打开目标页面,通过右键审查元素确定网页的url格式.数据格式.和网页编码形式. ①先看url的格式, F12观察一下链接的形式;② 再看目标文本信息的标签格 ...

  3. 安卓微信连接fiddler等抓包工具无法抓取https

    问题描述: 在手机连接pc的fiddler后,安卓微信打不开https页面,安卓的浏览器.qq等都可以正常访问https,ios也都可以,就只有安卓微信放问https是空白页面 解决思路: 一. 证书 ...

  4. Python爬虫实战六之抓取爱问知识人问题并保存至数据库

    大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...

  5. Python爬虫(一)抓取指定的页面

    (以下是在windows环境下的操作,python版本为3) 1.urllib库介绍 官方文档上的解释是: urllib is a package that collects several modu ...

  6. python爬虫(一)_爬虫原理和数据抓取

    本篇将开始介绍Python原理,更多内容请参考:Python学习指南 为什么要做爬虫 著名的革命家.思想家.政治家.战略家.社会改革的主要领导人物马云曾经在2015年提到由IT转到DT,何谓DT,DT ...

  7. Python爬虫实战四之抓取淘宝MM照片

    原文:Python爬虫实战四之抓取淘宝MM照片其实还有好多,大家可以看 Python爬虫学习系列教程 福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 本篇目标 1. ...

  8. 一次Python爬虫的修改,抓取淘宝MM照片

    这篇文章是2016-3-2写的,时隔一年了,淘宝的验证机制也有了改变.代码不一定有效,保留着作为一种代码学习. 崔大哥这有篇>>小白爬虫第一弹之抓取妹子图 不失为学python爬虫的绝佳教 ...

  9. Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

随机推荐

  1. java——关于异常处理机制的简单原理和应用

    异常处理机制的简单原理和应用 一.Execption可以分为java标准定义的异常和程序员自定义异常2种 (1)一种是当程序违反了java语规则的时候,JAVA虚拟机就会将发生的错误表示为一个异常.这 ...

  2. Yarn NodeManager restart

    一.介绍默认Yarn NodeManager重启后会断开所有当前正在运行的container的状态,这意味着重启后需要重新启动container进程,该特性的作用就是把NM的状态临时保存到本地,重启后 ...

  3. Hive shell 命令

    Hive shell 命令. 连接 hive shell 直接输入 hive 1.显示表 hive> show tables; OK test Time taken: 0.17 seconds, ...

  4. oracle DataGuard 主从 踩过坑的

    一.主机描述 dbprimary: 192.168.1.57 主机名称db1    dbstandby: 192.168.1.58 主机名成db2    SID: orcl 二.配置tns,配置好的文 ...

  5. style="display:none"隐藏html的标签

    隐藏html的标签 <div class="span11 alignment"> <h1>我的虚拟网络</h1> </div> &l ...

  6. MySql C++调用库Connector/c++编译 和 接口封装【三】Connector/c++ 使用总结及封装

    工程需要加上各个路径: 库使用需要几个文件: 1.include 文件夹 c/c++ /常规/附加包含目录 Connector/c++ 的安装版里面的Include 文件夹.或者把 /driver以及 ...

  7. 将BAT文件注册为服务的方法

    一.什么是instsrv.exe和srvany.exe instsrv.exe.exe和srvany.exe是Microsoft Windows Resource Kits工具集中 的两个实用工具,这 ...

  8. 一个极其高效的虚拟机内存冗余消除机制:UKSM

    Linux内核机制KSM(Kernel Samepage Merging)能合并KVM虚拟机之间相同内存的页面,被CentOS, RHEL之类的服务器内核广泛采用,但是其速度很慢.UKSM(Ultra ...

  9. tornado 重定向404

    方法一: 一度喜欢tornado的我, 一直在尝试寻找自定义404的方法,恰巧在看tornaod的mvc结构的时候看到了解决办法 方法之巧妙令人从心底佩服.后来我克隆一份到自己的github以作备份. ...

  10. Resource接口,及资源

    Resource介绍 编码的时候,除了代码本身,我们还需要对外部的资源进行处理.例如:URL资源.URI资源.File资源.ClassPath相关资源.服务器相关资源(VFS等)等等. 而这些资源的处 ...