1. 程式人生 > >Python網頁抓取urllib,urllib2,httplib[3]

Python網頁抓取urllib,urllib2,httplib[3]

使用urllib2,太強大了

試了下用代理登陸拉取cookie,跳轉抓圖片......

直接上demo程式碼了

包括:直接拉取,使用Reuqest(post/get),使用代理,cookie,跳轉處理

#!/usr/bin/python
# -*- coding:utf-8 -*-
# urllib2_test.py
# author: wklken
# 2012-03-17 [email protected]


import urllib,urllib2,cookielib,socket

url = "http://www.testurl....." #change yourself
#最簡單方式
def use_urllib2():
  try:
    f = urllib2.urlopen(url, timeout=5).read()
  except urllib2.URLError, e:
    print e.reason
  print len(f)

#使用Request
def get_request():
  #可以設定超時
  socket.setdefaulttimeout(5)
  #可以加入引數  [無引數,使用get,以下這種方式,使用post]
  params = {"wd":"a","b":"2"}
  #可以加入請求頭資訊,以便識別
  i_headers = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5",
             "Accept": "text/plain"}
  #use post,have some params post to server,if not support ,will throw exception
  #req = urllib2.Request(url, data=urllib.urlencode(params), headers=i_headers)
  req = urllib2.Request(url, headers=i_headers)

  #建立request後,還可以進行其他新增,若是key重複,後者生效
  #request.add_header('Accept','application/json')
  #可以指定提交方式
  #request.get_method = lambda: 'PUT'
  try:
    page = urllib2.urlopen(req)
    print len(page.read())
    #like get
    #url_params = urllib.urlencode({"a":"1", "b":"2"})
    #final_url = url + "?" + url_params
    #print final_url
    #data = urllib2.urlopen(final_url).read()
    #print "Method:get ", len(data)
  except urllib2.HTTPError, e:
    print "Error Code:", e.code
  except urllib2.URLError, e:
    print "Error Reason:", e.reason

def use_proxy():
  enable_proxy = False
  proxy_handler = urllib2.ProxyHandler({"http":"http://proxyurlXXXX.com:8080"})
  null_proxy_handler = urllib2.ProxyHandler({})
  if enable_proxy:
    opener = urllib2.build_opener(proxy_handler, urllib2.HTTPHandler)
  else:
    opener = urllib2.build_opener(null_proxy_handler, urllib2.HTTPHandler)
  #此句設定urllib2的全域性opener
  urllib2.install_opener(opener)
  content = urllib2.urlopen(url).read()
  print "proxy len:",len(content)

class NoExceptionCookieProcesser(urllib2.HTTPCookieProcessor):
  def http_error_403(self, req, fp, code, msg, hdrs):
    return fp
  def http_error_400(self, req, fp, code, msg, hdrs):
    return fp
  def http_error_500(self, req, fp, code, msg, hdrs):
    return fp

def hand_cookie():
  cookie = cookielib.CookieJar()
  #cookie_handler = urllib2.HTTPCookieProcessor(cookie)
  #after add error exception handler
  cookie_handler = NoExceptionCookieProcesser(cookie)
  opener = urllib2.build_opener(cookie_handler, urllib2.HTTPHandler)
  url_login = "https://www.yourwebsite/?login"
  params = {"username":"user","password":"111111"}
  opener.open(url_login, urllib.urlencode(params))
  for item in cookie:
    print item.name,item.value
  #urllib2.install_opener(opener)
  #content = urllib2.urlopen(url).read()
  #print len(content)
#得到重定向 N 次以後最後頁面URL
def get_request_direct():
  import httplib
  httplib.HTTPConnection.debuglevel = 1
  request = urllib2.Request("http://www.google.com")
  request.add_header("Accept", "text/html,*/*")
  request.add_header("Connection", "Keep-Alive")
  opener = urllib2.build_opener()
  f = opener.open(request)
  print f.url
  print f.headers.dict
  print len(f.read())

if __name__ == "__main__":
  use_urllib2()
  get_request()
  get_request_direct()
  use_proxy()
  hand_cookie()


相關推薦

Python網頁urllib,urllib2,httplib[3]

使用urllib2,太強大了 試了下用代理登陸拉取cookie,跳轉抓圖片...... 直接上demo程式碼了 包括:直接拉取,使用Reuqest(post/get),使用代理,cookie,跳轉處理 #!/usr/bin/python # -*- coding:u

Python網頁之Lxml

Lxml是基於libxml2這一XML解析庫的Python封裝。該模組使用C語言編寫,解析速度比BeautifulSoup更快。 Lxml可以正確解析屬性兩側缺失的引號,並閉合標籤。如案例一 案例二

Python網路爬蟲】Python維基百科網頁(BeautifulSoup+Urllib2

引言: 從網路提取資料的需求和重要性正在變得越來越迫切。 每隔幾個星期,我都會發現自己需要從網路中提取資料。 例如,上週我們正在考慮建立一個關於網際網路上可用的各種資料科學課程的熱度和情緒指數。 這不僅需要找到新的課程,而且還要抓住網路的評論,然後在

Python 中利用urllib2簡單實現網頁

         網頁抓取就是把URL地址中指定的網路資源從網路流中讀取出來,儲存到本地。 在Python中,可以使用urllib2這個模組來抓取網頁,模組提供了讀取web頁面資料的介面,我們可以像讀

Python進行網頁

google 神奇 顯示 rss 遍歷 ecb data- 可用 appdata 引言   從網頁中提取信息的需求日益劇增,其重要性也越來越明顯。每隔幾周,我自己就想要到網頁上提取一些信息。比如上周我們考慮建立一個有關各種數據科學在線課程的歡迎程度和意見的索引。我們不僅需要

Python3網絡爬蟲(一):利用urllib進行簡單的網頁

robot 資源 urlopen 解碼 支付寶 編碼方式 只需要 服務器 net 一、預備知識 1.Python3.x基礎知識學習: 可以在通過如下方式進行學習: (1)廖雪峰Python3教程(文檔): URL:http://www.liaoxue

Python開發簡單爬蟲之靜態網頁篇:爬“豆瓣電影 Top 250”電影數據

模塊 歲月 python開發 IE 女人 bubuko status 公司 使用 目標:爬取豆瓣電影TOP250的所有電影名稱,網址為:https://movie.douban.com/top250 1)確定目標網站的請求頭: 打開目標網站,在網頁空白處點擊鼠標右鍵,

python爬蟲-- 網頁、圖片、文章

零基礎入門Python,給自己找了一個任務,做網站文章的爬蟲小專案,因為實戰是學程式碼的最快方式。所以從今天起開始寫Python實戰入門系列教程,也建議大家學Python時一定要多寫多練。 目標 1,學習Python爬蟲 2,爬取新聞網站新聞列表 3,爬取圖片 4,把爬取到的資料存在本地

使用Python進行網頁的介紹!

介紹 網頁抓取是一種重要的技術,經常在許多不同的環境中使用,尤其是資料科學和資料探勘。 Python在很大程度上被認為是網路抓取的首選語言,其原因在於Python的內嵌電池特性。 使用Python,您可以在大約15分鐘內使用不到100行程式碼建立一個簡單的抓取指令碼。 因此,無論何種用途,網頁抓

python beautifulsoup 網頁正文內容

最近要跟著同學做一個小專案,需要自己找語料庫,於是我用python 的 beautifulsoup 和urllib 來抓取一些網頁內容來做訓練語料。現在寫下來備忘,雖然還有些不足。 這裡,我抓取的是鳳凰軍事的滾動新聞,點開後可以發現是一系列的新聞連結,所以接下來就分兩個方面

Python 三種網頁方法

摘要:本文講的是利用Python實現網頁資料抓取的三種方法;分別為正則表示式(re)、BeautifulSoup模組和lxml模組。本文所有程式碼均是在python3.5中執行的。 本文抓取的是[中央氣象臺](http://www.nmc.cn/)首頁頭條資

Python動態網頁

python之抓取花瓣網圖片 實現方法: 1,建立一個資料夾。 2,模擬請求網路服務。 3,匹配抓取的圖片。 4,儲存。 #_*_coding:utf8_*_ import re import os import urllib,urllib2 i

Python3網路爬蟲——(1)利用urllib進行簡單的網頁

利用urllib進行簡單的網頁抓取urllib是Python提供的用於操作URL的模組l、快速使用urllib爬取網頁# -*- coding: UTF-8 -*- from urllib import

如何用Python,C#等語言去實現靜態網頁+動態網頁+模擬登陸網站

轉自: 背景 在網路,網頁,網站處理方面,很多人都遇到過,想要用某種語言(Python,C#等),去實現一些需求,常見的有這幾大類: 想要從某靜態網頁中,提取某些內容 想要抓取某些動態網頁中的某些內容 想要模擬登陸某個網站 對於這類需求,其基本的背後邏輯,都是相

Python3網路爬蟲(一):利用urllib進行簡單的網頁

執行平臺:Windows Python版本:Python3.x IDE:Sublime text3     一直想學習Python爬蟲的知識,在網上搜索了一下,大部分都是基於Python2.x的。因此打算寫一個Python3.x的爬蟲筆記,以便後續回顧

Python爬蟲煎蛋(jandan.net)無聊圖

下載 logs start input req com read ref color 1 #!/usr/bin/python 2 #encoding:utf-8 3 ‘‘‘ 4 @python 3.6.1 5 @author: [email prote

python 圖片

meid pat book png lis time env cep efault 1、圖片地址為下載地址訪問圖片地址可直接下載的   #!/usr/bin/env python  # -*- coding: utf-8 -*-  import urllib2  impor

python“煎蛋網”上面的美女圖片,尺度很大哦!哈哈

each file like http add 寫入 header 。。 num 廢話不多說,先上代碼: import urllib.request import re #獲得當前頁面的頁數page_name def get_pagenum(url): req

python+rabbitMQ某婚戀網站用戶數據

arm art header 留言 ima 數據轉換 公司 頁面 進行 “總是向你索取卻不曾說謝謝你~~~~”,在博客園和知乎上面吸收了很多知識,以後也會在這裏成長,這裏挺好,謝謝博客園和知乎,所以今天也把自己在項目期間做的東西分享一下,希望對朋友們有所幫助。。。。 廢

Python 一個糗百的段子的小程序

like 元素 爬蟲 self end fin resp tor pytho import requests import re #糗事百科爬蟲類 class QSBK: #初始化方法,定義一些變量 def __init__(self):