从urllib和urllib2基础到一个简单抓取网页图片的小爬虫

urllib最常用的两大功能(个人理解urllib用于辅助urllib2)

1.urllib.urlopen()

2. urllib.urlencode()   #适当的编码,可用于后面的post提交数据

import urllib
Dict = {‘name‘ : ‘Michael Foord‘,
          ‘location‘ : ‘Northampton‘,
          ‘language‘ : ‘Python‘}
print urllib.urlencode(Dict)

urllib2常用的函数

1.最基本的打开读取一个网页

import urllib2
response = urllib2.urlopen(‘http://www.baidu.com/‘)
html = response.read()

2.地址创建一个Request对象

req = urllib2.Request(‘http://www.baidu.com/‘)
response = urllib2.urlopen(req)
the_page = response.read()

3.Data数据利用post方式提交

value={‘name‘ : ‘Michael Foord‘,
          ‘location‘ : ‘Northampton‘,
          ‘language‘ : ‘Python‘}
data = urllib.urlencode(values)
request = urllib2.Request(url,data)
#request= urllib2.Request(url, data, headers)  Request对象共有三个参数
response = urllib2.urlopen(request)
print response.read()

4.在 HTTP Request 中加入特定的 Header

import urllib2
request = urllib2.Request(‘http://www.baidu.com/‘)
request.add_header(‘User-Agent‘, ‘fake-client‘)
response = urllib2.urlopen(request)
print response.read()

5.Cookie

import urllib2
import cookielib
cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(‘http://www.baidu.com‘)
for item in cookie:
    print ‘Name = ‘+item.name
    print ‘Value = ‘+item.value

6.得到 HTTP 的返回码

import urllib2
try:
    response = urllib2.urlopen(‘http://bbs.csdn.net/why‘)
except urllib2.HTTPError, e:
    print e.code

7.Timeout 设置

import urllib2
response = urllib2.urlopen(‘http://www.baidu.com/‘, timeout=10)

8.Redirect动作

import urllib2
my_url = ‘http://www.google.cn‘
response = urllib2.urlopen(my_url)
redirected = response.geturl() == my_url
print redirected
my_url = ‘http://rrurl.cn/b1UZuP‘
response = urllib2.urlopen(my_url)
redirected = response.geturl() == my_url
print redirected

9.使用 HTTP 的 PUT 和 DELETE 方法

import urllib2
request = urllib2.Request(uri, data=data)
request.get_method = lambda: ‘PUT‘ # or ‘DELETE‘
response = urllib2.urlopen(request)

10.Debug Log

import urllib2
httpHandler = urllib2.HTTPHandler(debuglevel=1)
httpsHandler = urllib2.HTTPSHandler(debuglevel=1)
opener = urllib2.build_opener(httpHandler, httpsHandler)
urllib2.install_opener(opener)
response = urllib2.urlopen(‘http://www.google.com‘)

11.表单的处理

# -*- coding: utf-8 -*-
import urllib
import urllib2
postdata=urllib.urlencode({
    ‘username‘:‘汪小光‘,
    ‘password‘:‘why888‘,
    ‘continueURI‘:‘http://www.verycd.com/‘,
    ‘fk‘:‘‘,
    ‘login_submit‘:‘登录‘
})
req = urllib2.Request(
    url = ‘http://secure.verycd.com/signin‘,
    data = postdata
)
result = urllib2.urlopen(req)
print result.read()

最后附上一段抓取某网站妹子图片的代码

import urllib
import urllib2
import os

def url_open(url):
    req = urllib2.Request(url)
    req.add_header(‘User-Agent‘, ‘Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0‘)
    response = urllib2.urlopen(req)
    html = response.read()

    return html

def get_page(url):
    html = url_open(url).decode(‘utf-8‘)

    a = html.find(‘current-comment-page‘) + 23
    b = html.find(‘]‘, a)

    return html[a:b]

def find_imgs(url):
    html = url_open(url).decode(‘utf-8‘)
    img_addrs = []

    a = html.find(‘img src=‘)

    while a != -1:
        b = html.find(‘.jpg‘, a, a+255)
        if b != -1:
            img_addrs.append(html[a+9:b+4])
        else:
            b = a + 9

        a = html.find(‘img src=‘, b)

    return img_addrs

def save_imgs(folder, img_addrs):
    for each in img_addrs:
        filename = each.split(‘/‘)[-1]
        with open(filename, ‘wb‘) as f:
            img = url_open(each)
            f.write(img)

def download_mm(folder=‘OOXX‘, pages=10):
    os.mkdir(folder)
    os.chdir(folder)

    url = "http://jandan.net/ooxx/"
    page_num = int(get_page(url))

    for i in range(pages):
        page_num -= i
        page_url = url + ‘page-‘ + str(page_num) + ‘#comments‘
        img_addrs = find_imgs(page_url)
        save_imgs(folder, img_addrs)

if __name__ == ‘__main__‘:
    download_mm()
时间: 2024-10-28 20:33:13

从urllib和urllib2基础到一个简单抓取网页图片的小爬虫的相关文章

Python3简单爬虫抓取网页图片

现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2),所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到大家,并希望大家批评指正. 1 import urllib.request 2 import re 3 import os 4 import urllib 5 #根据给定的网址来获取网页详细信息,得到的html就是网页的源代码 6 def getHtml(url): 7 page = urllib.r

30分钟编写一个抓取 Unsplash 图片的 Python爬虫

我一直想用 Python and Selenium 创建一个网页爬虫,但从来没有实现它. 几天前, 我决定尝试一下,这听起来可能是挺复杂的, 然而编写代码从 Unsplash 抓取一些美丽的图片还是挺容易的. PS:很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此我整理啦从基础的python脚本到web开发.爬虫.django.数据挖掘等[PDF等]需要的可以进Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新

beautifulsoup库简单抓取网页--获取所有链接例子

简介: 通过BeautifulSoup 的 find_all方法,找出所有a标签中的href属性中包含http的内容,这就是我们要找的网页的一级链接( 这里不做深度遍历链接) 并返回符合上述条件的a标签的href属性的内容,这就是我们要找的某个网页的所带有的一级链接 #!/opt/yrd_soft/bin/python import re import urllib2 import requests import lxml from bs4 import BeautifulSoup url = 

JMeter基础之一 一个简单的性能测试

JMeter基础之一 一个简单的性能测试 上一节中,我们了解了jmeter的一此主要元件,那么这些元件如何使用到性能测试中呢.这一节创建一个简单的测试计划来使用这些元件.该计划对应的测试需求. 1)测试目标网站是fnng.cnblogs.com  和 tt-topia.rhcloud.com 2)测试目的是该网站在负载达到20 QPS 时的响应时间. QPS 解释 QPS : Query Per Second 每秒查询率.是一台查询服务器每秒能够处理的查询次数.在因特网上,作为域名系统服务器的机

一个简单的全屏图片上下打开显示网页效果

打包下载地址:http://download.csdn.net/detail/sweetsuzyhyf/7602105 上源码看效果: <!DOCTYPE html> <html> <head> <title></title> <style> body { margin: 0; padding: 0; } .wrap { overflow: hidden; position: fixed; z-index: 99999; width:

[Python]网络爬虫(二):利用urllib2通过指定的URL抓取网页内容

版本号:Python2.7.5,Python3改动较大. 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源. 在Python中,我们使用urllib2这个组件来抓取网页.urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件. 它以urlopen函数的形式提供了一个非常简单的接口. 最简单的urllib2

MFC抓取网页代码简单版。

最近又在网上找了一些有关MFC抓取网页代码的文章看,发现有个比较简单的代码,和大家分享下. CInternetSession session(NULL, 0); CHttpFile* htmlFile = NULL; CString strLine, strHtml; CString url = _T("http://www.tqyb.com.cn/data/gzWeather/gz_weatherForecastInDays.js?"); TCHAR sRecv[1024]; UIN

使用 python urllib2 抓取网页时出现乱码的解决方案

这里记录的是一个门外汉解决使用 urllib2 抓取网页时遇到乱码.崩溃.求助.解决和涨经验的过程.这类问题,事后看来只是个极小极小的坑,不过竟然花去很多时间,也值得记录一下.过程如下:目标: 抓取 http://sports.sina.com.cn/g/premierleague/index.shtml 代码: 1 2 3 4 5 6 # coding: u8 import urllib2 url = "http://sports.sina.com.cn/g/premierleague/ind

php使用curl简单抓取远程url的方法

这篇文章主要介绍了php使用curl简单抓取远程url的方法,涉及php操作curl的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php使用curl抓取远程url的方法.分享给大家供大家参考.具体如下: cURL是一个非常有用的php库,可以用来连接不通类型的服务器和协议,下面是一个最基本的范例用来抓取远程网页 ? 1 2 3 4 5 6 <?php $c = curl_init('http://www.w3mentor.com/robots.txt'); curl_seto