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

  • 相关阅读:
    赫尔维茨公式
    从解析几何的角度分析二次型
    Struts 1 Struts 2
    记一次服务器被入侵的调查取证
    契约式设计 契约式编程 Design by contract
    lsblk df
    Linux Find Out Last System Reboot Time and Date Command 登录安全 开关机 记录 帐号审计 历史记录命令条数
    Infrastructure for container projects.
    更新文档 版本控制 多版本并发控制
    Building Microservices: Using an API Gateway
  • 原文地址:https://www.cnblogs.com/guo-xiang/p/4853293.html
Copyright © 2011-2022 走看看