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

优采云 发布时间: 2021-11-19 15:18

  浏览器抓取网页(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人工客服


线