Python中urllib+urllib2+cookielib模块编写爬虫实战

yizhihongxing

一、Python中urllib+urllib2+cookielib模块编写爬虫实战攻略

最常用的Python爬虫模块之一就是urllib库和urllib2库,它们可以用于进行HTTP(S)请求,获取网页源代码等操作。同时我们还可以使用Python中的cookielib模块来管理Cookies,模拟登录,配合urllib+urllib2使用可以实现爬虫的功能。

具体攻略步骤如下:

1.导入需要的模块

import urllib
import urllib2
import cookielib

2.创建一个CookieJar对象

cookie = cookielib.CookieJar()

3.创建一个代表网站的URL opener对象

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

4.为URL opener对象添加User-Agent信息,以免被服务器拒绝访问。这些信息可以通过在浏览器中按F12开发者模式查看请求头获得

opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:58.0) Gecko/20100101 Firefox/58.0')]

5.模拟登录需要POST数据,这里需要将POST数据编码为URL格式,以便在HTTP请求中使用

postdata = urllib.urlencode({'username': 'test', 'password': '123456'})

6.创建一个Request对象

req = urllib2.Request(url, postdata)

7.通过URL opener发起POST请求

response = opener.open(req)

8.获取登录成功后的网站信息

html = response.read().decode('utf-8')

上面的步骤可以实现模拟登录功能。接下来可以通过opener来访问需要登录才能访问的页面。

9.访问需要登录权限的网站

response = opener.open('http://www.example.com')
html = response.read().decode('utf-8')

10.处理抓取到的数据。

示例1:模拟登录CSND网站并访问个人中心页面

import urllib
import urllib2
import cookielib

# 创建一个CookieJar对象
cookie = cookielib.CookieJar()

# 创建一个代表网站的opener对象
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

# 为URL opener添加User-Agent信息,以免被服务器拒绝访问。
opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:58.0) Gecko/20100101 Firefox/58.0')]

# 模拟登录需要POST的数据
postdata = urllib.urlencode({'username': 'your_username', 'password': 'your_password'})

# 创建一个Request对象
req = urllib2.Request(url='http://passport.csdn.net/account/login', data=postdata)

# 通过URL opener发起POST请求
response = opener.open(req)

# 访问已经登录,需要登录权限的个人中心
response = opener.open('http://my.csdn.net/my/mycsdn')

# 获取登录成功后的网站信息
html = response.read().decode('utf-8')
print(html)

示例2:模拟登录京东商城并获取商品列表

import urllib
import urllib2
import cookielib

# 创建一个CookieJar对象
cookie = cookielib.CookieJar()

# 创建一个代表网站的opener对象
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

# 为URL opener添加User-Agent信息,以免被服务器拒绝访问。
opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:58.0) Gecko/20100101 Firefox/58.0')]

# 模拟登录需要POST的数据
postdata = urllib.urlencode({
    'pwd': 'your_password',
    'account': 'your_account'
    })

# 创建一个Request对象
req = urllib2.Request(url='https://passport.jd.com/uc/loginService', data=postdata)

# 通过URL opener发起POST请求
response = opener.open(req)

# 访问已经登录需要登录权限的页面
response = opener.open('https://order.jd.com/center/list.action')

# 获取网页内容并处理数据
html = response.read().decode('gbk')
print(html)

以上两个示例可以从中了解到爬虫中一个常见的流程,即模拟登录获取数据的功能实现方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中urllib+urllib2+cookielib模块编写爬虫实战 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 云计算设计模式(二)——断路器模式

    背景和问题 在分布式环境中,如在云。当中,应用程序运行訪问远程资源和服务的操作,有可能对这些操作的失败是因为瞬时故障。如慢的网络连接。超时。或者被过度使用的资源或临时不可用。这些故障一般之后的短时间内纠正自己,和一个强大的云应用应该准备使用的策略来处理它们。比如,通过重试模式进行说明。 可是,也能够是当中的故障是因为那些不easy预见的突发事件的情况下,这可…

    云计算 2023年4月11日
    00
  • 解析rainbond以应用为中心的架构设计原理

    解析Rainbond以应用为中心的架构设计原理 Rainbond是一款开源的云原生应用管理平台,以应用为中心的架构设计是其核心特点之一。本文将详细讲解Rainbond以应用为中心的架构设计原理,包括以下内容: 应用为中心的架构设计原理 应用编排 应用管理 示例说明 应用为中心的架构设计原理 Rainbond以应用为中心的架构设计原理是指将应用作为整个云原生应…

    云计算 2023年5月16日
    00
  • Golang 编写Tcp服务器的解决方案

    Golang 编写Tcp服务器的解决方案 Golang是一种高效、简洁、易于学习的编程语言,适用于各种应用场景。在网络编程方面,Golang提供了丰富的标准库和第三方库,可以方便地编写Tcp服务器。下面是一份关于如何使用Golang编写Tcp服务器的完整攻略,包括背景介绍、编写步骤、示例说明等。 1. 背景介绍 Tcp是一种可靠的传输协议,适用于各种应用场景…

    云计算 2023年5月16日
    00
  • FCN币发行价是多少?FCN币发财牛发行价格分析

    FCN币发行价是多少? FCN币(FengCaiNiu Coin)是一种基于区块链技术的数字货币,主要应用于股权融资和保险领域。FCN币的发行价是指首次公开发行的价格,也是投资者购买FCN币的价格。以下是FCN币的发行价及其背后的分析。 FCN币发财牛发行价格分析 第一步:研究市场需求 在评估FCN币发行价之前,首先需要研究市场对该数字货币的需求。可以通过分…

    云计算 2023年5月17日
    00
  • 阿里云数据库首推数据压缩功能 5倍压缩成本降80%

    阿里云数据库首推数据压缩功能 5倍压缩成本降80%完整攻略 一、背景介绍 最新的阿里云数据库RDS上,提供了数据压缩功能,可以将云数据库存储空间进行5倍数据压缩,降低了数据库存储成本,同时不降低I/O性能。 二、应用场景 数据压缩是在保证数据完整性和一定的安全性的基础上,对数据进行逻辑压缩,减少存储空间的一种技术手段。这样做,可以减小数据存储空间,节省存储运…

    云计算 2023年5月17日
    00
  • react中fetch之cors跨域请求的实现方法

    下面是关于“React中Fetch之CORS跨域请求的实现方法”的完整攻略,包含两个示例说明。 简介 在React中使用Fetch进行CORS跨域请求时,我们需要注意一些细节。本攻略中,我们将介绍如何使用Fetch进行CORS跨域请求,并提供一些最佳实践。 步骤 在React中使用Fetch进行CORS跨域请求时,我们可以通过以下步骤来实现: 在服务器端设置…

    云计算 2023年5月16日
    00
  • 华为云Stack新版发布:构筑行业云底座,共创行业新价值

    摘要:在以“政企深度用云,释放数字生产力”为主题的华为云Stack战略暨新品发布会上,华为云提出深度用云三大关键举措,并发布华为云Stack 8.2版本,以智能进化推动创造行业新价值。 本文分享自华为云社区《【华为云Stack】【大架光临】华为云Stack新版发布 第1期 | 构筑行业云底座,共创行业新价值》,作者:大架光临。 随着数字化进程的不断深入,政企…

    2023年4月10日
    00
  • 搜狐云发展中DomeOS的开发与Docker的应用

    搜狐云发展中DomeOS的开发与Docker的应用 搜狐云是搜狐公司旗下的云计算服务提供商,提供云服务器、云数据库、云存储等多种云计算服务。其中,DomeOS是搜狐云自主研发的容器云平台,支持Docker容器的部署、管理和监控。下面是一份关于搜狐云发展中DomeOS的开发与Docker的应用的完整攻略,包括背景介绍、DomeOS的开发过程、Docker的应用…

    云计算 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部