zoukankan      html  css  js  c++  java
  • 爬虫

    一、目标

    爬取网址 https://www.169tp.com/gaogensiwa/ 前20页的美女图片

    二、准备

    通过pip安装第三方库 request、PyQuery、fake_useragent 

        pip install request

        pip install PyQuery

        pip install fake_useragent 

    项目下新建image目录

    三、代码
    import requests
    from pyquery import PyQuery as pq
    # 可自动生成浏览器UserAgent请求头
    from fake_useragent import UserAgent
    # 模拟浏览器请求头
    headers = {
      # 请求类型
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
      # 浏览器类型 (有的网址服务器检测浏览器 反扒其中的一种) 可随机生成浏览器类型
      'User-Agent': UserAgent().random
    }

    # 抓取每个表格图片url

    def index_data(page):
      url = 'https://www.169tp.com/gaogensiwa/list_3_{}.html'.format(page)
      # 获取首页数据
      response = requests.get(url,headers=headers).content.decode('gbk')
      # 初始化网页数据
      doc = pq(response)
      # 取需要层级的块 list <a>


      data = doc('.product01 li a').items()
      # 遍历 a 获取href 链接
      for i in data:
        detail_url = i.attr('href')
        detail_data(detail_url)

    # 获取详情页url 

    def detail_data(urls):
      response = requests.get(urls,headers=headers).content.decode('gbk')
      doc = pq(response)
      img_url = doc('.big_img p img').items()
      for i in img_url:
        image_url = i.attr('src')
      download_img(image_url)


    count = 0

    # 保存图片
    def download_img(image_url):
      global count
      response = requests.get(image_url, headers=headers).content
      # 保存文件
      with open('image/{}.jpg'.format(count), 'ab') as f: # a追加文件 b进制写入
        f.write(response)
      count += 1

    # 提取前20页 /观察分页域名变化


    for i in range(1, 20):
      index_data(i)

    群交流(262200309)
  • 相关阅读:
    js_css_dl.dt实现列表展开、折叠效果
    property_自己编写一个读取Property文件的Util类
    HttpClient_002_中文乱码、HttpClient中文乱码透析、总结
    HttpClient_001_初步实现项目01的servlet,与项目02的servlet,之间数据访问
    jsp:中文乱码解决
    linux命令
    js 监测from表单中的input和select,时时监测,没有输入或选择信息报错,不允许提交数据
    数据库的那些事
    待参考
    layer.open多次触发,遮罩层覆盖content的解决办法
  • 原文地址:https://www.cnblogs.com/webster1/p/12592765.html
Copyright © 2011-2022 走看看