爬虫基础知识

URL介绍

URL介绍.png

请求介绍

如何通过urllib2实现请求,参看下图:


通过urllib2完成请求.png

使用 HTTP 的 PUT 和 DELETE 方法

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

异常处理

from urllib2 import Request, urlopen, URLError, HTTPError  
  
req = Request('http://www.jianshu.com/users/92a1227beb27/latest_articles')  
    
try:    
    
    response = urlopen(req)    
    
except URLError, e:    
  
    if hasattr(e, 'code'):    
    
        print 'The server couldn't fulfill the request.'    
    
        print 'Error code: ', e.code    
  
    elif hasattr(e, 'reason'):    
    
        print 'We failed to reach a server.'    
    
        print 'Reason: ', e.reason    

数据解析

数据解析.png

写出的测试示例

# coding:utf-8
import urllib2
from lxml import etree
import sys
print sys.getdefaultencoding()
reload(sys)
sys.setdefaultencoding('utf-8')

#网站数据复杂,暂时还没有处理方法
def oper(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
    }
    req = urllib2.Request(url=url,headers=headers)
    try:
        response = urllib2.urlopen(req)
    except urllib2.URLError,e:
        print e.reason
    html = response.read()
    myparser = etree.HTMLParser(encoding="utf-8")
    selector = etree.HTML(html, parser=myparser)
    stainfos = selector.xpath('//input[@name="stainfo"]/@value')
    for stainfo in stainfos:
        print stainfo
    stanames = selector.xpath('//input[@name="staname"]/@value')
    for staname in stanames:
        print staname
    stainfodbys = selector.xpath('//input[@name="stainfodby"]/@value')
    for stainfodby in stainfodbys:
        print stainfodby


def start():
    urls = ['http://58.68.130.147/#']
    for url in urls:
        oper(url)



if __name__ == '__main__':
    start()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 技术选型 scrapy vs requests + beautifulsoup 1,requests和beauti...
    码农小杨阅读 711评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,754评论 18 399
  • 一、网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spide...
    随风化作雨阅读 1,115评论 0 0
  • 春节的那几天里天气一直阴沉,太阳能热水器出不了热水,洗澡就成了问题,母亲说,桥头的澡堂子又重新开了,就寻思着带我去...
    禾月heyue阅读 489评论 0 0