鱼C论坛

 找回密码
 立即注册
查看: 976|回复: 1

爬取百度图片里边姐姐的照片——坂井泉水

[复制链接]
发表于 2020-3-29 23:08:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是直接使用的,还有只爬取地址存入数据库mongdb和PhantomJS版本,后边因为配置文件太多就不放出来了。
先上代码,再上成果!
  1. rom selenium import webdriver
  2. import time
  3. import json
  4. import re
  5. import random
  6. from selenium.webdriver.common.by import By
  7. from selenium.webdriver.common.keys import Keys
  8. from selenium.webdriver.support import expected_conditions as EC
  9. from selenium.webdriver.support.wait import WebDriverWait
  10. from selenium.common.exceptions import TimeoutException, NoSuchElementException
  11. from pyquery import PyQuery as pq
  12. import os,os.path
  13. import urllib.request

  14. #配置模拟器
  15. chrome_driver = r'C:\Users\Chysial\AppData\Local\Google\Chrome\Application\chromedriver.exe'
  16. browser = webdriver.Chrome(chrome_driver)
  17. wait = WebDriverWait(browser,10)
  18. browser.get('https://www.baidu.com/')

  19. #cookie模拟登陆,get一般运行一次就行,我因为调试后边把它注释了
  20. def get_cookies(browser):
  21.     #cookies没有时限方法,一种方法直接在里面把expiry改成int,另一种就是输出时候改写然后写入文件不然就需要修改了
  22.     time.sleep(50)
  23.     with open('C:\\Users\\Chysial\\Desktop\\cookies.txt','w') as cookief:
  24.         cookief.write(json.dumps(browser.get_cookies()))
  25.     browser.close()

  26. def open_chrome(browser):
  27.     browser.delete_all_cookies()
  28.     with open('C:\\Users\\Chysial\\Desktop\\cookies.txt') as cookief:
  29.         cookieslist = json.load(cookief)
  30.         for cookies in cookieslist:
  31.             browser.add_cookie(cookies)
  32. #从主页面baidu一步一步爬到图片里去
  33. def search():
  34.     try:
  35.         input = wait.until(
  36.             EC.presence_of_element_located((By.CSS_SELECTOR ,'#kw'))
  37.         )
  38.         submit = wait.until(
  39.             EC.presence_of_element_located((By.CSS_SELECTOR ,'#su'))
  40.         )
  41.         input.send_keys("百度图片")
  42.         submit.click()
  43.         wait.until(
  44.             EC.presence_of_element_located((By.CSS_SELECTOR, '#page > a.n'))
  45.         )
  46.         html = browser.page_source
  47.         doc = pq(html)
  48.         items = doc('#1 .t a')
  49.         links = []
  50.         for each in items.items():
  51.             links.append(each.attr('href'))
  52.         links[0]
  53.         browser.get(links[0])
  54.         input = wait.until(
  55.             EC.presence_of_element_located((By.CSS_SELECTOR ,'#kw'))
  56.         )
  57.         input.send_keys("坂井泉水")
  58.         input.send_keys(Keys.ENTER)
  59.         wait.until(
  60.             EC.presence_of_element_located((By.CSS_SELECTOR, '.imgpage .imglist .imgitem'))
  61.         )
  62.         
  63.     except TimeoutException:
  64.         print("youcuom")
  65.     return get_products()

  66. #获取姐姐图片的地址
  67. def get_products():
  68.         wait.until(
  69.             EC.presence_of_element_located((By.CSS_SELECTOR, '.imgpage .imglist .imgitem'))
  70.         )
  71.         html = browser.page_source
  72.         doc = pq(html)
  73.         items = doc('.imgpage .imglist .imgitem').items()
  74.         i = 0
  75.         product = {}
  76.         for each in items:
  77.             i += 1
  78.             product[ 'picture'+str(i)] = each.attr('data-objurl')
  79.             if i==3:
  80.                 break
  81.         return product

  82. #下载与保存
  83. def download_picture(folder='坂井泉水姐姐'):
  84.     os.chdir("C:\\Users\\Chysial\\Desktop")
  85.     os.mkdir(folder)
  86.     os.chdir(folder)
  87.     each = search()
  88.     for i in each:
  89.         req = urllib.request.Request(each[i])
  90.         response = urllib.request.urlopen(req)
  91.         img = response.read()
  92.         with open(i+'.jpg','wb') as f:
  93.             f.write(img)
  94.    
  95.    
  96. def main():
  97.     # 运行一次就行了,我这里就不重复了get_cookies(browser)
  98.     open_chrome(browser)
  99.     browser.refresh()
  100.     each = search()
  101.     download_picture(folder='坂井泉水姐姐')

  102.    
  103. if __name__ == '__main__':
  104.     main()
复制代码

姐姐.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-29 23:09:28 | 显示全部楼层
内存小,电脑 就先爬几个意思一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-18 10:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表