一个简单的爬虫工程

环境:

OS:Window10

python:3.7

安装一些库文件

pip install requests
pip install beautifulsoup4
pip install lxml

在安装的时候如果遇到了你的pip版本过低的错误的话,可以找到你本地的C:\Users\XXX\PycharmProjects\getHtml\venv\Lib\site-packages下面的pip-18.1.dist-info文件夹删除,之后在进行更新

下面是提取一个网页的图片代码

import time

import requests
import os
import threading from bs4 import BeautifulSoup class BeautifulPicture(): def __init__(self):
self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
self.web_url = "https://unsplash.com/"
self.folder_path = r'C:\Users\peiqiang\Desktop\python Pic' def request(self, url):
r = requests.get(url)
return r def mkdir(self, path):
path = path.strip()
isExists = os.path.exists(path)
if not isExists:
print("创建名字叫做", path, "的文件夹")
os.makedirs(path)
print("创建成功!")
else:
print(path, '文件夹已经存在了,不再创建') def save_img(self, url, name):
print('开始保存图片...')
img = self.request(url)
file_name = self.folder_path + '\{}.jpg'.format(name)
print('开始保存文件')
f = open(file_name, 'ab')
f.write(img.content)
f.close()
thread_lock.release()
print(file_name, '文件保存成功!') def get_pic(self):
print('开始网页get请求')
r = self.request(self.web_url)
print('开始获取所有img标签')
all_a = BeautifulSoup(r.text, 'lxml').find_all('img')
print('开始创建文件夹')
self.mkdir(self.folder_path)
print('开始切换文件夹')
os.chdir(self.folder_path)
i=0
for a in all_a:
i += 1
print("開始下載第{}張圖片".format(i))
thread_lock.acquire()
print("抓取圖片的URL:", a["src"])
self.save_img(a["src"], i) thread_lock = threading.BoundedSemaphore(value=10)
beauty = BeautifulPicture()
beauty.get_pic()

  效果如下

本地的存放的路径下

最新文章

  1. Effective C++ 34 区分接口继承和实现继承
  2. @media自适应宽度
  3. js反序列化时间
  4. matlab中使用fuzzy工具箱
  5. 碰到一个在app内部浏览器锚点异常的问题
  6. vs UNICODE 零散的笔记
  7. php zendstudio 常用的一些自定义模板标签
  8. U3D学习使用笔记(三)
  9. C#入门经典第九章定义类-1
  10. linux CentOS6.5 安装SVN & 可视化管理工具iF.SVNAdmin
  11. stsuts2的一些问题
  12. 浅谈python中的闭包函数
  13. JSON 数据重复 出现$ref
  14. WPF TextBlock IsTextTrimmed 判断文本是否超出
  15. c中perror函数
  16. 11个超震撼的HTML5和纯CSS3动画源码
  17. Springboot实现filter拦截token验证和跨域
  18. request.GetResponse()超时的解决办法
  19. 餐巾计划问题 zwk费用流解法
  20. 阿里云学习笔记之Java Web环境搭建

热门文章

  1. (28)打鸡儿教你Vue.js
  2. shell编程题(三)
  3. 《挑战30天C++入门极限》新手入门:C++中布尔类型
  4. 《挑战30天C++入门极限》c++中指针学习的两个绝好例子
  5. jenkins之SSH Publishers环境变量
  6. [C++] wchar_t关键字使用方法
  7. Shell同步数据到oracle数据库
  8. svn更新,清理,上传时出现乱码解决方案
  9. [转]IDE 、SATA、SCSI 的区别
  10. idea断点调试学习随笔