zoukankan      html  css  js  c++  java
  • 爬虫3-python爬取非结构化数据下载到本地

    urlretrieve方法

    通过上节爬虫2,可以将结构化数据存入mysql等数据库,但脚本中还存在非结构化数据:

    # print(content.xpath('//*[@dd_name="大图"]/img/@src').pop())   # 图片

     python的urlretrieve方法可实现将远程数据下载本地:

    #url              下载链接
    #filename         指定保存本地路径文件名
    #reporthook       回调函数,默认缺省
    #data             post到服务器的数据,默认缺省
    urlretrieve(url, filename=None, reporthook=None, data=None)

    举例

    # coding=utf-8
    import requests
    from lxml import etree
    
    # 1爬取网页信息
    url = 'http://product.dangdang.com/29148702.html'
    headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/69.0.3497.81 Safari/537.36 Maxthon/5.3.8.2000 "
        }
    aa = requests.get(url, headers=headers)
    message = aa.content.decode('gbk')
    content = etree.HTML(message)                                 # message是str格式,需要先转成HTML格式
    
    # 1.2解析图片信息
    print(content.xpath('//*[@dd_name="大图"]/img/@src').pop())   # 图片
    #运行结果
    http://img3m2.ddimg.cn/33/28/29148702-1_w_23.jpg
    # 这时用urlretrieve来处理,可以下载到本地当前目录下
    url_img=content.xpath('//*[@dd_name="大图"]/img/@src').pop()
    urllib.request.urlretrieve(url_img,"test_img.jpg")

     实践

    豆瓣电影爬取页面所有图片,参考该页面:

    这里为什么用原网页url不行?

    # coding=utf-8
    import requests
    import urllib.request
    import json
    
    # 1爬取网页信息
    # 用原网页的url不行,把/explore#! 替换成/j/search_subjects?之后可以
    # url = 'https://movie.douban.com/explore#!type=movie&tag=%E6%9C%80%E6%96%B0&page_limit=20&page_start=0'
    url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=%E6%9C%80%E6%96%B0&page_limit=20&page_start=0'
    headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/69.0.3497.81 Safari/537.36 Maxthon/5.3.8.2000 "
        }
    aa = requests.get(url, headers=headers)
    message = aa.content.decode('utf-8')
    json_content=json.loads(message)                              # 读取json格式
    # print(json_content) 分析json结构
    # 2解析json信息,并下载图片
    for line in json_content['subjects']:
        img_address=line['cover']    # 图片
        rating=line['rate']
        title=line['title']
        filename=title+'_'+rating+'.jpg'
        urllib.request.urlretrieve(img_address, filename)
        print(filename+'is download.')



  • 相关阅读:
    spring-cloud-feign案例
    spring-cloud-hystrix熔断
    科技创业公司最爱的9大工具箱
    近期入手一树莓派卡片机,体验了一下它的强大,写篇报告
    Android应用盈利广告平台的嵌入方法详解
    UnityVS(Visual Studio Tools For Unity)的安装与使用
    unity3d快捷键大全
    Unity3D Android手机开发环境配置,可真机发布调试
    谷歌最近收购的机器人公司
    Microsoft Robotics Developer Studio 4
  • 原文地址:https://www.cnblogs.com/foolangirl/p/14164631.html
Copyright © 2011-2022 走看看