一、请求-响应

在利用python语言实现爬虫时,主要用到了urllib和urllib2两个库。首先用一段代码说明如下:

 import urllib
import urllib2 url="http://www.baidu.com"
request=urllib2.Request(url)
response=urllib2.urlopen(request)
print response.read()

我们知道一个网页就是以html为骨架,js为肌肉,css为衣服所构成的。上述代码所实现的功能就是把百度网页的源码爬取到本地。

其中,url为要爬取的网页的网址;request发出请求,response是接受请求后给出的响应。最后用read()函数输出的就是百度网页的源码。

二、GET-POST

两者都是向网页传递数据,最重要的区别是GET方式是直接以链接形式访问,链接中包含了所有的参数,当然如果包含了密码的话是一种不安全的选择,不过你可以直观地看到自己提交了什么内容。

POST则不会在网址上显示所有的参数,不过如果你想直接查看提交了什么就不太方便了,大家可以酌情选择。

POST方式:

 import urllib
import urllib2
values={'username':'2680559065@qq.com','Password':'XXXX'}
data=urllib.urlencode(values)
url='https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn'
request=urllib2.Request(url,data)
response=urllib2.urlopen(request)
print response.read()

GET方式:

import urllib
import urllib2
values={'username':'2680559065@qq.com','Password':'XXXX'}
data=urllib.urlencode(values)
url = "http://passport.csdn.net/account/login"
geturl = url + "?"+data
request=urllib2.Request(geturl)
response=urllib2.urlopen(request)
print response.read()

三、异常处理

处理异常时,用到了try-except语句。

 import urllib2

 try:
response=urllib2.urlopen("http://www.xxx.com")
except urllib2.URLError,e:
print e.reason

通过上述的介绍及代码展示,我们已经初步认识了爬虫过程,希望对大家有所帮助。

爬取图片:

import urllib
import urllib.request
import re
import os
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

def gethtml(url):
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
    req = urllib.request.Request(url=url, headers=headers)
    page=urllib.request.urlopen(req)
    html=page.read()
    html=html.decode('utf-8')
    return html
    
def getImg(html):
    reg='<img src="(http.*?\.png)"'
    imgre=re.compile(reg)
    imglist=imgre.findall(html)
    return imglist
    
def make_dir(floder):
    path=os.getcwd()+'/'+floder
    if not os.path.isdir(path):
        os.makedirs(path)
    return path

def save_image(path,imglist):
    x=0
    for imgurl in imglist:
        print(imgurl)
        urllib.request.urlretrieve(imgurl,'{}/{}.png'.format(path,x))
        x=x+1
    
if __name__=='__main__':
    html=gethtml('https://blog.csdn.net/yql_617540298/article/details/81411995')
    imglist=getImg(html)
    path=make_dir('test')
    save_image(path,imglist)

python爬虫之基本知识的更多相关文章

  1. 【Python爬虫】入门知识

    爬虫基本知识 这阵子需要用爬虫做点事情,于是系统的学习了一下python爬虫,觉得还挺有意思的,比我想象中的能干更多的事情,这里记录下学习的经历. 网上有关爬虫的资料特别多,写的都挺复杂的,我这里不打 ...

  2. 【图文详解】python爬虫实战——5分钟做个图片自动下载器

    python爬虫实战——图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,(没看的先去看!!)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap sho ...

  3. python爬虫实战:利用scrapy,短短50行代码下载整站短视频

    近日,有朋友向我求助一件小事儿,他在一个短视频app上看到一个好玩儿的段子,想下载下来,可死活找不到下载的方法.这忙我得帮,少不得就抓包分析了一下这个app,找到了视频的下载链接,帮他解决了这个小问题 ...

  4. Python 爬虫练习: 爬取百度贴吧中的图片

    背景:最近开始看一些Python爬虫相关的知识,就在网上找了一些简单已与练习的一些爬虫脚本 实现功能:1,读取用户想要爬取的贴吧 2,读取用户先要爬取某个贴吧的页数范围 3,爬取每个贴吧中用户输入的页 ...

  5. Python爬虫开发教程

     正文   现在Python语言大火,在网络爬虫.人工智能.大数据等领域都有很好的应用.今天我向大家介绍一下Python爬虫的一些知识和常用类库的用法,希望能对大家有所帮助.其实爬虫这个概念很简单,基 ...

  6. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  7. Python爬虫(1):基础知识

    爬虫基础知识 一.什么是爬虫? 向网站发起请求,获取资源后分析并提取有用数据的程序. 二.爬虫的基本流程 1.发起请求 2.获取内容 3.解析内容 4.保存数据 三.Request和Response ...

  8. python 爬虫与数据可视化--python基础知识

    摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...

  9. python爬虫工程师各个阶段需要掌握的技能和知识介绍

    本文主要介绍,想做一个python爬虫工程师,或者也可以说是,如何从零开始,从初级到高级,一步一步,需要掌握哪些知识和技能. 初级爬虫工程师: Web前端的知识:HTML, CSS, JavaScri ...

随机推荐

  1. 第一个简单的maven项目

    学习一个新的东西,最快的方式就是实践.所以我们也不用多说什么了,直接拿一个项目来练手.下面的整理取自maven权威指南,在一堆maven资料中,我觉得这本书写的最好. 简介 我们介绍一个用Maven ...

  2. 编译原理-NFA构造DFA

    本题摘自北邮的编译原理与技术. 首先,根据此图构造状态转换表 表中第一列第一行表示从第一个符号B通过任意个空转换能到达的节点,Ia表示由此行的状态数组({B,5,1}可以看作0状态)经过一个a可以到达 ...

  3. nodejs爬虫笔记(四)---利用nightmare解决加载更多问题

    目标: 解决页面加载更多问题.笔记三中,我们只爬取到网页的部分信息,而点击加载更多后的页面内容是没有提取到的.开始我的想法是找到加载更多的数据接口(可参照:http://www.jianshu.com ...

  4. Shell跳板机sshstack

    笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 源码地址: https://github.com/sshstack/sshstack 为什么要写shell跳板机? ...

  5. Java自学能学会吗?最新Java高级学习路线

    就好像一千个人心中有一千个哈利波特一样,这个答案不绝对也不唯一,Java好学但自学的确阻力有些大,作为一门技术语言,它所蕴含的智慧绝对不是靠几本XX入门,XX框架之类的书所能概括,自学Java你要做好 ...

  6. 针对Chrome谷歌等浏览器不再支持showModalDialog的解决方案

    最近在维护一个老项目,之前都是用IE来调试代码的.今天想着测试一下项目的兼容性,就用了谷歌浏览器,然后就遇到这样一个问题:一段用showModalDialog实现弹出模态框和返回值的js代码,在调试时 ...

  7. 如何设置select和option的文字居中?

    今天在设置option文字居中时发现,给select设置text-align:center在火狐浏览器下ok,但是在chrome浏览器无效,然后option在两个浏览器下设置text-align:ce ...

  8. mongodb- Java API 查询操作

    package com.x.mongodb; import java.net.UnknownHostException;import java.util.Collection;import java. ...

  9. AutoDesk Forge 获取令牌认证

    创建应用程序 在开始使用Forge Platform之前,您需要设置一个应用程序并获取您的客户端ID和密码. 步骤1:登录Dev Portal 去开发门户网站:https://developer.au ...

  10. Jquery里面种的 JSON.parse() 与JSON.stringify() 的区别

    JSON.parse()与JSON.stringify()的区别   JSON.parse()[从一个字符串中解析出json对象] Demo: //定义一个字符串 var data='{"N ...