美文网首页
Python爬虫(二)

Python爬虫(二)

作者: 一路向前_莫问前程_前程似锦 | 来源:发表于2018-09-24 16:45 被阅读4次
    爬虫搭档 urllib+bs4+re

    urllib基础
    要系统学习urllib模块,我们从urllib基础开始。这个知识点中,urlretrieve()、urlcleanup()、info()、getcode()、geturl()等

    urlretrieve() 直接将网页爬取到本地

    urlcleanup() 清除urlretrieve()产生的缓存

    post与get两种请求方式,自动模拟http请求
    比如登陆、搜索某些信息的时候会用到
    get请求表示的自动模拟搜索,比如百度关键词搜素
    post请求表示自动模拟登陆

    搜索的关键字为中文时,我们需要quote一下
    get请求和post需要Request一下

    post请求需要用到urllib.prase模块

    构建表单数据(在http://www.iqianyue.com/mypost实验)查看源代码,发现name属性值为“name”,密码对应的输入框中,name属性值为“pass”。因此构建表单的数据中要包含两个字段,字段名为“name”,“pass”,字段值设置成对应的需要传递的值。格式为字典:
    {字段名1:字段值1,字段名2:字段值2,...}
    代码:

    import urllib.request
    import urllib.parse
     
    url = "http://www.iqianyue.com/mypost"
    postdata = urllib.parse.urlencode({
        "name":"213161836",
        "pass":"15713927150yzxc"
    }).encode("utf-8") #将数据使用urlencode编码后,使用encode()设置utf-8编码
    req = urllib.request.Request(url,postdata)
    req.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safri/537.36")
    data = urllib.request.urlopen(req).read().decode("utf-8","ignore")
    print(data)
    

    403 需要伪装

    浏览器伪装技术原理

    我们可以试试爬取csdn博客,我们发现会返回403,因为对方服务器会
    对爬虫进行屏蔽。此时,我们需要伪装成浏览器才能爬取。
    浏览器伪装 我们一般通过报头进行

    由于urlopen()对于一些HTTP的高级功能不支持,所以,我们如果要修
    改报头,可以使用urllib.request.build_opener()进行,当然,也可以
    使用urllib.request.Request()下的add_header()实现浏览器的模拟。
    我们重点讲前者方法,后者方法是否掌握无所谓,
    
    

    相关文章

      网友评论

          本文标题:Python爬虫(二)

          本文链接:https://www.haomeiwen.com/subject/xrzcoftx.html