zoukankan      html  css  js  c++  java
  • 使用urllib编写python爬虫

    新版python中,urllib和urllib2合并了,统一为urllib

    (1)简单爬取网页

    import urllib

    content = urllib.request.urlopen(req).read().decode("utf-8")

    (2)添加header

    import urllib

    req = urllib.request.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0')
    req.add_header('Referer', 'http://www.***.com')
    my_page = urllib.request.urlopen(req).read().decode("utf-8")

    (3)设置cookie

    import urllib
    import http.cookiejar

    cj = http.cookiejar.LWPCookieJar()
    cookie_support = urllib.request.HTTPCookieProcessor(cj)
    opener = urllib.request.build_opener(cookie_support, urllib.request.HTTPHandler)
    urllib.request.install_opener(opener)

    FAQ:

    1.请求url中有中文,报异常

    解决办法:将中文部分使用urllib.parse.quote处理

    关于urllib.parse.quote:

    屏蔽特殊的字符、比如如果url里面的空格!url里面是不允许出现空格的。
    在 Python2.x 中的用法是:
    urllib.quote(text)
    Python3.x 中是
    urllib.parse.quote(text)
    按照标准,URL只允许一部分ASCII字符(数字字母和部分符号),其他的字符(如汉字)是不符合 URL 标准的。
    所以URL中使用其他字符就需要进行URL编码。
    URL中传参数的部分(query String),格式是:
    name1=value1&name2=value2&name3=value3
    假如你的name或者value值中有『&』或者『=』等符号,就当然会有问题。所以URL中的参数字符串也需要把『&=』等符号进行编码。
    URL编码的方式是把需要编码的字符转化为 %xx 的形式。通常URL编码是基于UTF-8的(当然这和浏览器平台有关)。

    2.网页解析异常

    解决办法:urllib.request.urlopen(url).read().decode("utf-8", 'ignore'),忽略掉异常字符

    有用链接:

    http://blog.csdn.net/pi9nc/article/details/9734437

    http://www.pythonclub.org/python-network-application/observer-spider

  • 相关阅读:
    jQuery之$().each和$.each的区别(转)
    js获取非行间样式--有bug,忧伤
    js之数组方法
    js之检测对象类型
    for-in枚举对象属性
    jq 处理select 下拉框
    阿里大鱼短信发送服务应用实例(PHP SDK)
    php RSA 非对称加解密实例
    JS HTML table 生成 Excel文件
    php RSA 加解密实例
  • 原文地址:https://www.cnblogs.com/guo-xiang/p/4853293.html
Copyright © 2011-2022 走看看