day20总结

day20总结

  1. 图片下载

    import requests
    
    def download_img(url: str):
        # 1.对图片地址发送请求
        response = requests.get(url)
    
        # 2.获取图片数据
        data = response.content
    
        # 3.将数据写入图片文件中
        with open('../files/img/zhiying.jpg', 'wb') as f:
            f.write(data)
    
    if __name__ =='__main__':
        download_img('https://i03piccdn.sogoucdn.com/9d5ee8cbc564ffbb')
    
  2. 图片批量下载

    def download_image(url: str):
        response = requests.get(url)
        with open(f'files/{uuid1()}.jpeg', 'wb') as f:
            f.write(response.content)
    
    
    # 1. 获取整个页面的数据
    response = requests.get('https://cd.zu.ke.com/zufang')
    content = response.text
    # print(content)
    
    # 2. 解析数据获取所有房屋的图片地址
    all_images = findall(r'(?s)<a\s+class="content__list--item--aside".+?>\s+<img.+?data-src="(.+?)"', content)
    
    # 3. 下载所有图片
    for x in all_images:
        download_image(x)
    
  3. 浏览器伪装

    import requests
    # 浏览器伪装
    headers = {
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36 Core/1.77.119.400 QQBrowser/10.9.4817.400'
    }
    
    response = requests.get('https://movie.douban.com/top250',headers=headers)
    print(response)
    
  4. bs4数据解析

    • bs4的作用

      • 专门用来解析网页数据的第三方库(基于CSS选择器解析网页数据);
      • 注意:下载的时候用beautifulsuop4;使用的时候用bs4
    • 语法结构:

      # 导入解析包
      from bs4 import BeautifulSoup
      
      # bs4的用法
      
      # 1)获取网页源代码
      html = open('../files/网页源代码.html',encoding='utf-8').read()
      
      # 基于网页源代码创建BeautifulSoup对象
          # soup对象代表网页对应的html标签(代表整个网页)
      soup = BeautifulSoup(html,'lxml')
      
      # 获取标签
      #   soup.select(css选择器)   -   获取css选择器选中的所有标签,返回值是一个列表,列表中的元素是标签对象
      #   soup.select_one(CSS选择器)   -   获取CSS选择器选中的第一个标签,返回值是标签对象
      #   标签对象.select(css选择器)   -    在指定标签中获取CSS选择器选中的所有标签标签,返回值是一个列表,列表中的元素是标签对象
      #   标签对象.select_one(css选择器)   -   获取CSS选择器选中的第一个标签,返回值是标签对象
      
      box2 = soup.select('#box2')
      result = box2.select('p')
      
      '''
      获取标签内容和属性
      '''
      p = soup.select_one('p')
      img = soup.select_one('img')
      
      # 获取标签内容:标签对象.text
      # 获取标签属性值 : 标签对象.attrs[属性名]
      
  5. 豆瓣电影练习(单页)

    import requests
    from bs4 import BeautifulSoup
    import csv
    
    
    # 1. 获取网页数据
    def get_net_data(url: str):
        headers = {
            'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
        }
        response = requests.get(url, headers=headers)
        return response.text
    
    
    # 2. 网页数据解析
    def analysis_data(html: str):
        # 解析数据
        soup = BeautifulSoup(html, 'lxml')
        all_film_div = soup.select('.grid_view>li>.item')
        all_data = []
        for div in all_film_div:
            name = div.select_one('.title').text
            info = div.select_one('.bd>p').text.strip().split('\n')[-1].strip()
            time, country, category = info.split('/')
            score = div.select_one('.rating_num').text
            comment_count = div.select('.star>span')[-1].text[:-3]
            intro = div.select_one('.inq').text
            all_data.append([name, score, time.strip(), country.strip(), category.strip(), comment_count, intro])
    
        # 保存数据
        f = open('files/第一页电影数据.csv', 'w', encoding='utf-8', newline='')
        writer = csv.writer(f)
        writer.writerow(['电影名', '评分', '上映时间', '国家', '类型', '评论数', '简介'])
        writer.writerows(all_data)
    
    
    if __name__ == '__main__':
        result = get_net_data('https://movie.douban.com/top250')
        analysis_data(result)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值