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

一、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日

相关文章

  • 芝麻信用在哪里查看自己是否有负面记录?有负面记录怎么办?

    芝麻信用是一款普及度较高的信用评估工具,用户可以通过芝麻信用了解自己的信用状况。以下是芝麻信用在哪里查看自己是否有负面记录以及有负面记录怎么办的详细攻略: 1. 查看自己是否有负面记录 如果您想了解自己是否有负面记录,可以通过以下步骤在芝麻信用中查看: 打开芝麻信用APP。 点击“信用报告”按钮。 在信用报告页面中,您可以查看自己的信用分数以及信用记录。 如…

    云计算 2023年5月16日
    00
  • 这次的云计算大会,你不会再错过了吧!500元超值三日参会票开抢

    点击上方“中国云报”可关注! 最近电影《大话西游》又重新被搬上了荧幕,让芸芸众生又细细回顾里面的一些桥段和台词,小编也不例外。星爷在影片中含泪说的一句话堪称经典:曾经有一份真挚的爱情摆在我的面前,但我没有珍惜,等我失去的时候才追悔莫及,尘世间最痛苦的事莫过于此。 各位云计算行业的大佬们,小编要告诉您的是,在这个科技如此发达的时代,技术才是王道,“充电”才最重…

    云计算 2023年4月13日
    00
  • Python lambda表达式filter、map、reduce函数用法解析

    Python lambda表达式filter、map、reduce函数用法解析 介绍 Python中的lambda表达式、filter、map和reduce是Python中的高阶函数。lambda表达式允许您编写函数而不是名称。filter和map函数允许您以一种跨数据结构进行映射和筛选的方式对元素进行操作。reduce函数允许您以递归的方式处理序列元素。在…

    云计算 2023年5月18日
    00
  • 火币上怎么把币卖成钱?火币网买币提现教程

    下面是“火币上怎么把币卖成钱?火币网买币提现教程”的完整攻略。 准备工作 在进行火币网买币提现操作之前,我们需要完成以下几个准备工作: 注册一个火币网账号; 完成实名认证; 将需要提现的数字货币转入火币网账户中。 操作步骤 第一步:登录火币网账户 打开火币网首页,在页面右上方找到“登录”按钮,输入用户名和密码登录。 第二步:进入“资产”页面 登录成功后,页面…

    云计算 2023年5月17日
    00
  • 更安全、更低耗的微服务架构改造之道

    摘要:微服务改造是政企客户云原生演进的重头戏,但如何做到成本低、安全性高、性能不变、方便调用等,却是一门学问。本文讲述华为云Stack的解决之道。 本文分享自华为云社区《【华为云Stack】【大架光临】第17期:更安全、更低耗的微服务架构改造之道》,作者:杨奕 华为云技术规划专家。 在以往的文章《云原生时代,政企混合云场景IT监控和诊断的难点和应对之道》中,…

    云计算 2023年4月17日
    00
  • centos 版本阿里云上配置svn服务器,eclipse连接的时候提示:由于目标计算机积极拒绝,无法连接

    再说下面的时候,千万不要犯一些低级错误,比如说端口号写错了,命名是3690不要写成3960,。其实在这里我的主要原因是出在权限那块,设置的权限改为了none,详见上一篇博文。在这里也整理了一下网上的一些解决方案,如下: 出现上面的原因主要是: 1、svn没有启动成功 2、防火墙没有svn的端口号3690 解决方法: 1、启动svn服务 svnserve -d…

    云计算 2023年4月13日
    00
  • 从运维的角度理解Iaas、Paas、Saas云计算

    平时我们的运维工作,大致就是了解需求、申请服务器、配置网络、服务器软件安装、应用部署、数据存储、系统调优、平台维护等 按照Iaas、Paas、Saas的三层来分工我们平时的任务:                最底层的Iaas层提供网络、服务器、存储等硬件 中层的Paas除了提供Iaas层的东西外,还提供软件安装、数据存储工具、系统的资源、平台的维护,你只需…

    2023年4月10日
    00
  • 通过linux-PAM实现禁止root用户登陆的方法

    在linux系统中,root账户是有全部管理权限的,一旦root账户密码外泄,对于服务器而言将是致命的威胁;出于安全考虑,通常会限制root账户的登陆,改为配置普通用户登陆服务器后su切换到root账户使用,这种方式较为安全,限制root账户登陆的方式有多种,本文主要介绍如何通过linux-PAM限制账户登陆。 前言 在linux系统中,root账户是有全部…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部