美文网首页
爬虫第二弹 代码操作

爬虫第二弹 代码操作

作者: 程猿先生 | 来源:发表于2017-08-09 20:09 被阅读0次

    代码操作一 爬取 贴吧战狼2 网页信息

    # -*- coding:utf-8 -*-
    
    # 引入需要的模块
    import urllib # 用于进行中文编码
    import urllib2 # 用于进行爬虫核心处理的
    
    
    # 定义一个函数,用于爬取对应的数据
    def load_url(url, file_name):
        """
        作用:针对指定的url地址,进行数据的获取
        :param url: 要爬取数据的具体url地址
        :param file_name: 要保存到的文件名称:在当前函数中,只做提示使用
        :return:  爬取到的数据
        """
        print("~~~~~~~~~~~~开始爬取%s的内容~~~~~~~~~~~~" % file_name)
        # 爬取程序
        my_headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.7 Safari/537.36"
        }
        request = urllib2.Request(url, headers=my_headers)
    
        content = urllib2.urlopen(request).read()
    
        print("#####爬取%s的内容完成#####" % file_name)
    
        return content
    
    
    # 定义一个函数,用于保存数据
    def save_data(data, file_name):
        """
        作用:主要是用来进行数据的存储的
        :param data: 要存储的数据
        :param file_name:  要存储的文件名称
        :return:  无
        """
        print("~~~~~~~~~~~~开始保存%s的内容~~~~~~~~~~~~" % file_name)
    
        with open(file_name, "w") as f:
            f.write(data)
    
        print("#####保存%s的内容完成#####" % file_name)
    
    # 定义函数,用于进行爬虫的核心处理功能
    def spider(url, kw, begin, end):
        """
        作用:用于进行核心爬虫功能的调度【领导】
        :param url: 要爬取的地址
        :param kw: 贴吧名称
        :param begin: 起始页码
        :param end: 结束页码
        :return: 无
        """
        for page in range(begin, end+1):
            # 计算需要的页码
            pn = (page - 1) * 50
            # 进行kw参数的编码
            kw = urllib.urlencode({"kw":kw})
            # 拼接url地址
            full_url = url + kw + "&pn=" + str(pn)
            # 定义一个保存文件的名称
            file_name = "-----" + str(page) + "----.html"
            # 开始爬取数据
            html = load_url(full_url, file_name)
            # 保存数据到文件
            save_data(html, file_name)
    
    # 主程序运行入口
    if __name__ == "__main__":
        """
            主程序运行入口函数
        """
        # 用户输入相关数据
        url = "http://tieba.baidu.com/f?"
        kw = raw_input("请输入要爬取的贴吧名称:")
        begin = int(raw_input("请输入开始页码:"))
        end = int(raw_input("请输入结束页面:"))
    
        # 调用爬虫开始执行
        spider(url, kw, begin, end)
    

    运行结果:


    Paste_Image.png

    代码操作二

    百度图片 爬取美女图网页

    # -*- coding:utf-8 -*-
    
    import urllib
    import urllib2
    
    # 请求url地址
    url = "https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E9%9D%92%E7%BA%AF%E7%BE%8E%E5%B0%91%E5%A5%B3%E5%9B%BE%E7%89%87&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=%E9%9D%92%E7%BA%AF%E7%BE%8E%E5%B0%91%E5%A5%B3%E5%9B%BE%E7%89%87&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=150&gsm=96&rn=30&1502176187727="
    
    # 请求头描述信息
    header = {
    "Accept" : "text/plain, */*; q=0.01",
    "X-Requested-With" : "XMLHttpRequest",
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.7 Safari/537.36"
    }
    
    # 包装个请求对象
    request  = urllib2.Request(url, headers= header)
    
    # 根据请求对象发送数据请求,获取服务器返回的响应对象
    response = urllib2.urlopen(request)
    
    # 获取响应对象中的数据
    content = response.read()
    
    # 将获取到的数据保存在文件中
    with open("girls.json", "w") as f:
        f.write(content)
    

    结果展示

    Paste_Image.png

    代码操作三 post请求爬取豆瓣电影网站页面

    # -*- coding:utf-8 -*-
    
    # 引入需要的库
    import urllib
    import urllib2
    
    # 要访问的url地址
    url = "https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10"
    
    # 要传递的Post方式的数据,有可能会有多组数据
    submit_data = {
        "start":20,
        "tags":"喜剧"
    }
    # 编码
    data = urllib.urlencode(submit_data)
    
    # 构造请求头信息,创建请求对象
    headers = {
        "Accept" : "application/json, text/plain, */*",
        "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.7 Safari/537.36",
        "Accept-Language" : "zh-CN,zh;q=0.8"
    }
    
    request = urllib2.Request(url, data, headers)
    
    # 发送请求,获取服务器响应数据
    response = urllib2.urlopen(request)
    
    # 获取爬取到的数据
    content = response.read()
    
    # 保存数据
    with open("movies.json", "w") as f:
        f.write(content)
    

    结果展示:

    Paste_Image.png

    代码操作四 爬取须登录的网页qq空间

    # -*- coding:utf-8 -*-
    
    # 引入需要的模块
    import urllib
    import urllib2
    
    url="https://user.qzone.qq.com/153513634--/infocenter"
    
    my_header = {
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.7 Safari/537.36",
    "Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    "Accept-Language" : "zh-CN,zh;q=0.8",
    "Cookie": "153513634_################"
    }
    
    request = urllib2.Request(url, headers = my_header)
    
    response = urllib2.urlopen(request)
    
    html = response.read()
    
    with open("qzone_1007821300.html", "w") as f:
        f.write(html)
    

    结果展示:

    Paste_Image.png

    相关文章

      网友评论

          本文标题:爬虫第二弹 代码操作

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