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

一:抓取简单的页面:

用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中:

?
1
2
3
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中是

?
1
2
3
4
5
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

输出结果:

(0)

相关推荐

  • 【AI白身境】学深度学习你不得不知的爬虫基础

    今天是新专栏<AI白身境>的第七篇,所谓白身,就是什么都不会,还没有进入角色. 对于深度学习,一个好的数据集可以说非常重要的,但是通常情况下我们并没有大量的数据,因此我们有必要掌握一定的爬 ...

  • 第一个Python爬虫程序

    本节编写一个最简单的爬虫程序,作为学习Python爬虫前的开胃小菜. 下面使用Python内置的urllib库获取网页的html信息.注意,urllib库属于Python的标准库模块,无须单独安装,它 ...

  • 第 56 天:Python 爬虫之 urllib 包基本使用

    urllib 是一个 python 内置包,不需要额外安装即可使用,包里面包含了以下几个用来处理 url 的模块: urllib.request,用来打开和读取 url,意思就是可以用它来模拟发送请求 ...

  • Python爬虫入门,快速抓取大规模数据(第二部分)

    通过第一部分的练习,我们已经有了一个可运行的爬虫.这一部分我们详细的看看如何使用BeautifulSoup从网页中提取我们需要的数据,学习的目标是能够使用BeautifulSoup从网页中提取任意的数 ...

  • Python爬虫入门,快速抓取大规模数据

    大到各类搜索引擎,小到日常数据采集,都离不开网络爬虫.爬虫的基本原理很简单,遍历网络中网页,抓取感兴趣的数据内容.这篇文章会从零开始介绍如何编写一个网络爬虫抓取数据,然后会一步步逐渐完善爬虫的抓取功能 ...

  • Python爬虫入门,快速抓取大规模数据(第四部分)

    如果没有读过前两部份的读者,建议先看前面几部份: 当前大部分网站都使用JS动态的加载内容,浏览器执行JS并生成网页内容.因为Python的requests库不会像浏览器一样执行JS,所以抓取到的内容并 ...

  • SEO如何做会更受蜘蛛喜爱抓取,达到事半功倍的效果?

    只有让搜索引擎给网站更高的排名,才可以更多的将网站显示在用户面前,提升用户点击率,提升网站的知名度以及更有效的促进用户转化率,所以,想要做好SEO优化,就需要对搜索引擎规则了解透彻,只做取悦搜索引擎的 ...

  • 网站内容SEO如何做才能让百度蜘蛛快速抓取收录呢?

    我们做SEO的都知道,网站关键词要想有好的排名,收录是前提基础,如果一个网站的页面都没收录几个,更别谈百度会给予它什么好的排名.大家做新站的时候,前期都非常关注网站内容被收录的问题,如何做才能让百度蜘 ...

  • 有了这个 Jupyter 插件,用 Python 做数据分析就像 Excel 一样简单

    Python编程与实战 前天 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 加载一个Jupyter插件后,无需写代码就能做数据分析,还帮你生成相应代码? 没错,只需要加载这个名为Mito ...

  • 用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...

  • 『爬虫四步走』手把手教你使用Python抓取并存储网页数据!

    爬虫是Python的一个重要的应用,使用Python爬虫我们可以轻松的从互联网中抓取我们想要的数据,本文将基于爬取B站视频热搜榜单数据并存储为例,详细介绍Python爬虫的基本流程.如果你还在入门爬虫 ...

  • [Python从零到壹] 四.网络爬虫之入门基础及正则表达式抓取博客案例

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...