浏览器抓取网页(Python中urllib库Python2系列使用的步骤和访问步骤 )

优采云 发布时间: 2022-01-09 15:03

  浏览器抓取网页(Python中urllib库Python2系列使用的步骤和访问步骤

)

  一:爬取一个简单的页面:

  用Python做爬虫网站这个功能很强大。今天尝试抓取百度主页,非常成功。让我们看一下步骤。

  首先你需要准备工具:

  1.python:我比较喜欢用新东西,所以用Python3.6、python下载地址:

  2.开发工具:可以使用Python编译器(小),但是因为之前一直在做前端,使用webstrom,所以选择JetBrains的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,然后在浏览器中访问“”。在Fiddler左侧的访问记录中,找到“200 HTTPS”条目,点击查看对应的请求头和响应头的具体内容:

  

  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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线