python爬取基础网页图片
python基础爬虫总结
1.爬取信息原理
与浏览器客户端类似,向网站的服务器发送一个请求,该请求一般是url,也就是网址。之后服务器响应一个html页面给客户端,当然也有其他数据类型的信息,这些就是网页内容。我们要做的就是解析这些信息,然后选择我们想要的,将它爬取下来按要求写入到本地。
2. 爬虫基本流程
1.获取网页的响应的信息
这里有两个常用的方法
html = requests.get(url)
return html.text
或者
html = urllib.request.urlopen(url)
return html.read()
第一个get方法会返回一个Response对象,里面有服务器返回的所有信息,包括响应头,响应状态码等。直接输出html,只有这个<Response [200]>,要将信息提取出来有两个方法,content和text,content返回bytes型数据,text返回Unicode型数据(这种初级爬虫用什么都一样,编码什么的我还在研究-_-),这里我们直接返回.text。
第二个方法我引用网上一句话:
urlopen打开URL网址,url参数可以是一个字符串url或者是一个Request对象,返回的是http.client.HTTPResponse对象.http.client.HTTPResponse对象大概包括read()、readinto()、getheader()、getheaders()、fileno()、msg、version、status、reason、debuglevel和closed函数,其实一般而言使用read()函数后还需要decode()函数,这里一个巨大的优势就是:返回的网页内容实际上是没有被解码或的,在read()得到内容后通过指定decode()函数参数,可以使用对应的解码方式。
2.解析网页内容
正则表达式是个很好的选择,但我不怎么会用。然而一个强大的第三方库给我提供了很大的帮助,Beautifulsoup。
soup = BeautifulSoup(html,'html.parser)
urls = soup.find_all('div',attrs={'class':'bets-name'})
print(urls[0])
BeautifulSoup给我们提供了很多方法,先创建一个soup实例,用html.parer自带解析器,也可以选lxml等。然后根据目标标签中的内容传入参数,找到目标标签,注意find_all返回的对象。
3.将信息下载到本地
如果是文本信息可以直接写入,图片信息的话就要再次访问图片链接,然后以content方法写入
3.爬取站酷图片
这里以Pycharm作为开发工具!
# coding: utf-8
# data: 2018/04/04
#target: Pictures on ZHANK
from bs4 import BeautifulSoup
import requests
import urllib.request
def get_html(url):
html = requests.get(url)
return html.text
def Download(html,filepath):
soup = BeautifulSoup(html,'html.parser')
urls = soup.find_all('div',class_="imgItem maskWraper")
count = 1
try:
for url in urls:
img = url.find('img')
print(img)
img_url = img['data-original']
req = requests.get(img_url)
with open(filepath + '/' + str(count) + '.jpg', 'wb') as f: #以二进制形式写入文件
f.write(req.content)
count += 1
if count == 11: #爬取十张图片就停止
break
except Exception as e:
print(e)
def main():
url = "http://www.hellorf.com/image/search/%E5%9F%8E%E5%B8%82/?utm_source=zcool_popular" #目标网址
filepath = "D://桌面/Python/study_one/Spider_practice/Spider_File/icon" #图片保存地址
html = get_html(url)
Download(html,filepath)
if __name__ == "__main__":
main()
python爬取基础网页图片的更多相关文章
- python爬取某个网页的图片-如百度贴吧
python爬取某个网页的图片-如百度贴吧 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用告诉我 #coding:utf-8 import urllib imp ...
- Python 爬取单个网页所需要加载的地址和CSS、JS文件地址
Python 爬取单个网页所需要加载的URL地址和CSS.JS文件地址 通过学习Python爬虫,知道根据正式表达式匹配查找到所需要的内容(标题.图片.文章等等).而我从测试的角度去使用Python爬 ...
- 使用python爬取P站图片
刚开学时有一段时间周末没事,于是经常在P站的特辑里收图,但是P站加载图片的速度比较感人,觉得自己身为计算机专业,怎么可以做一张张图慢慢下这么low的事,而且这样效率的确也太低了,于是就想写个程序来帮我 ...
- python 爬取知乎图片
先上完整代码 import requests import time import datetime import os import json import uuid from pyquery im ...
- Python爬取养眼图片
1.准备 各位绅士们,你可能会觉得疫情在家无聊,那么现在我们的Python语言可以满足你们的需求.项目需要的工具(1)Python3(2)requests库requests库可以通过代码pip ins ...
- Python爬取全站妹子图片,差点硬盘走火了!
在这严寒的冬日,为了点燃我们的热情,今天小编可是给大家带来了偷偷收藏了很久的好东西.大家要注意点哈,我第一次使用的时候,大意导致差点坏了大事哈! 1.所需库安装 2.网站分析 首先打开妹子图的官网(m ...
- 用python爬取全网妹子图片【附源码笔记】
这是晚上没事无聊写的python爬虫小程序,专门爬取妹子图的,养眼用的,嘻嘻!身为程序狗只会这个了! 废话不多说,代码附上,仅供参考学习! """ 功能:爬取妹子图全网妹 ...
- python爬取动态网页数据,详解
原理:动态网页,即用js代码实现动态加载数据,就是可以根据用户的行为,自动访问服务器请求数据,重点就是:请求数据,那么怎么用python获取这个数据了? 浏览器请求数据方式:浏览器向服务器的api(例 ...
- python爬取煎蛋图片
py2版本: #-*- coding:utf-8 -*- #from __future__ import unicode_liter import urllib,urllib2,time import ...
随机推荐
- 解决 IE7 中 display:inline-block 失效的问题
我们在做首页菜单选项的时候,通常会用 li 标签去做,通过对 li 标签设置样式: display:inline-block 可以让 li 标签横排显示.但是这样做,在 IE7 浏览器下面会有一个兼容 ...
- pycharts实现可视化
https://blog.csdn.net/u012535605/article/details/80677791http://pyecharts.org/#/zh-cn/prepare (中文官网 ...
- 超简便安装mysql
CentOS7默认数据库是mariadb,配置等用着不习惯,因此决定改成mysql,但是CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1 ...
- linux 内核信号量
Linux内核的信号量在概念和原理上和用户态的System V的IPC机制信号量是相同的,不过他绝不可能在内核之外使用,因此他和System V的IPC机制信号量毫不相干. 信号量在创建时需要设置一个 ...
- ps aux排序
按内存升序排列: ps aux --sort=+rss 按内存降序排列: ps aux --sort=-rss 按cpu升序排列: ps aux --sort=+%cpu 为按cpu降序排列. ps ...
- 在shell中如何判断字符串是否为有效的IP地址【转】
转自 在shell中如何判断字符串是否为有效的IP地址_echoisecho_新浪博客http://blog.sina.com.cn/s/blog_53a844e50100xxus.html 近来需要 ...
- javascript反混淆之packed混淆(一)
javascript反混淆之packed混淆(一) 什么是JavaScript反混淆,在理解这个概念前我们先来看下什么是代码混淆,代码混淆,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理 ...
- 516.Longest Palindromic subsequence---dp
题目链接:https://leetcode.com/problems/longest-palindromic-subsequence/description/ 题目大意:找出最长回文子序列(不连续), ...
- Machine Learning系列--维特比算法
维特比算法(Viterbi algorithm)是在一个用途非常广的算法,本科学通信的时候已经听过这个算法,最近在看 HMM(Hidden Markov model) 的时候也看到了这个算法.于是决定 ...
- 设计模式之笔记--代理模式(Proxy)
代理模式(Proxy) 定义 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问. 类图 描述 Subject,定义了ConcreteSubject和Proxy的共用接口,这样就可以 ...