萌新的Python学习日记 - 爬虫无影 - 使用BeautifulSoup + urlretrieve 抓取并保存图片:weheartit
2018-03-16 21:41
851 查看
博客第三天测试页面:weheartit:https://weheartit.com/inspirations/taylorswift?page=1&scrolling=true&before=308888434,目的:爬取并存储页面上的图片,
工程内容:Python3.5,jupyter notebook工具包:requests, BeautifulSoup,urllib.request代码(可翻页):import requests
from bs4 import BeautifulSoup as bs
import urllib.request as urlrequest #用于存储图片
import time #设定暂定
import random #随机函数
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36',
} #自写headers
# proxies = {'https':'62.133.191.116:8080'}
path = 'D:Python_projects/taylorswift_imgs/10pages1/' #定义存储路径
#urls = ['https://weheartit.com/inspirations/taylorswift?page={}&scrolling=true&before=308888434'.format(str(i)) for i in range(20)] #此次未使用
base_url = 'https://weheartit.com/inspirations/taylorswift?page=' #用于爬虫
def get_url(num): #定义函数,获取图片链接
imgs_url = [] #用于存储图片链接
for page_num in range(6,num + 1): #开始获取链接
time.sleep(random.uniform(1,5)) #随机暂停1~5s
full_url = base_url + str(page_num) #补充链接
web = requests.get(full_url,headers = headers) #获取页面
soup = bs(web.text,'lxml') #解析页面
imgs = soup.select('img.entry-thumbnail') #抽取图片
for img in imgs:
time.sleep(random.uniform(1,5))
img_url = img.get('src') #抽取图片链接
imgs_url.append(img_url)
return imgs_url
#print(imgs_url) #用于测试
def dl_imgs(img_url): #定义函数,下载图片
urlrequest.urlretrieve(img_url,path+img_url.split('/')[-2]+img_url.split('/')[-1]) #下载并命名
for img_url in get_url(10): #调用函数,获取图片链接
time.sleep(random.uniform(1,5))
dl_imgs(img_url) #调用函数,存储图片
print结果(部分):
此处print imgs_url 里面的链接,共1080条,此处保存为csv以供分析
存储截图(部分):
内容:成功存储前十页240张图片,两个子文件夹分别为前5页和后5页内容(因为被封锁多次,所以测试了很久由于时间问题,没有一次性爬取10页,另外的24张图片为第一页爬取测试时存储的)
error:1 . 设置代理进行翻页爬取时,总是被封锁(和之前的另一个工程很像,应该是代理之类的问题)
2 . 不设置proxies,只用headers,在使用浏览器插件的情况下可以比较好地完成任务
3 . 比较耗费时间,因为随机时间设置太短或者太规律容易被封锁
4 . 此次同时联系函数的定义和使用,如果只用for循环的话应该更容易完成爬取10页的任务
总结: 1. 注意存储路径的设置
2. 存储文件的命名匹配规则,注意.strip( ) [ -n ]方法的应用 3. (翻页时)注意函数的逻辑性
4. 由于使用了浏览器插件,如果再设置代理反而会影响爬取(以前也有设置代理反而被封锁的情况)
5. 对于函数中涉及增加以及返回值的部分需要认真分析
6. 此次下载的图片似乎跟分析的页面有些出入,这点需要再花时间弄清楚
工程内容:Python3.5,jupyter notebook工具包:requests, BeautifulSoup,urllib.request代码(可翻页):import requests
from bs4 import BeautifulSoup as bs
import urllib.request as urlrequest #用于存储图片
import time #设定暂定
import random #随机函数
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36',
} #自写headers
# proxies = {'https':'62.133.191.116:8080'}
path = 'D:Python_projects/taylorswift_imgs/10pages1/' #定义存储路径
#urls = ['https://weheartit.com/inspirations/taylorswift?page={}&scrolling=true&before=308888434'.format(str(i)) for i in range(20)] #此次未使用
base_url = 'https://weheartit.com/inspirations/taylorswift?page=' #用于爬虫
def get_url(num): #定义函数,获取图片链接
imgs_url = [] #用于存储图片链接
for page_num in range(6,num + 1): #开始获取链接
time.sleep(random.uniform(1,5)) #随机暂停1~5s
full_url = base_url + str(page_num) #补充链接
web = requests.get(full_url,headers = headers) #获取页面
soup = bs(web.text,'lxml') #解析页面
imgs = soup.select('img.entry-thumbnail') #抽取图片
for img in imgs:
time.sleep(random.uniform(1,5))
img_url = img.get('src') #抽取图片链接
imgs_url.append(img_url)
return imgs_url
#print(imgs_url) #用于测试
def dl_imgs(img_url): #定义函数,下载图片
urlrequest.urlretrieve(img_url,path+img_url.split('/')[-2]+img_url.split('/')[-1]) #下载并命名
for img_url in get_url(10): #调用函数,获取图片链接
time.sleep(random.uniform(1,5))
dl_imgs(img_url) #调用函数,存储图片
print结果(部分):
此处print imgs_url 里面的链接,共1080条,此处保存为csv以供分析
存储截图(部分):
内容:成功存储前十页240张图片,两个子文件夹分别为前5页和后5页内容(因为被封锁多次,所以测试了很久由于时间问题,没有一次性爬取10页,另外的24张图片为第一页爬取测试时存储的)
error:1 . 设置代理进行翻页爬取时,总是被封锁(和之前的另一个工程很像,应该是代理之类的问题)
2 . 不设置proxies,只用headers,在使用浏览器插件的情况下可以比较好地完成任务
3 . 比较耗费时间,因为随机时间设置太短或者太规律容易被封锁
4 . 此次同时联系函数的定义和使用,如果只用for循环的话应该更容易完成爬取10页的任务
总结: 1. 注意存储路径的设置
2. 存储文件的命名匹配规则,注意.strip( ) [ -n ]方法的应用 3. (翻页时)注意函数的逻辑性
4. 由于使用了浏览器插件,如果再设置代理反而会影响爬取(以前也有设置代理反而被封锁的情况)
5. 对于函数中涉及增加以及返回值的部分需要认真分析
6. 此次下载的图片似乎跟分析的页面有些出入,这点需要再花时间弄清楚
相关文章推荐
- 萌新的Python学习日记 - 爬虫无影 - 使用BeautifulSoup + css selector 抓取自己想要网页内容
- 萌新的Python学习日记 - 爬虫无影 - 使用BeautifulSoup + css selector 抓取动态网页内容:Knewone
- Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
- 萌新的Python学习日记 - 爬虫无影 - 添加headers抓取动态网页内容:TripAdvisor(上)
- 使用Python+selenium+BeautifulSoup抓取动态网页的关键信息
- [Python]使用Scrapy爬虫框架简单爬取图片并保存本地
- Python+BeautifulSoup抓取暴走漫画页面图片
- Python爬虫关于urlretrieve()函数的使用笔记
- 爬虫卡死问题 带图片保存的urlretrieve 和urlopen
- Python---对html文件内容进行搜索取出特定URL地址字符串,保存成列表,并使用每个url下载图片,并保存到硬盘上,使用bs4,beautifulsoup模块
- 使用Python3批量保存贴吧图片-附爬虫程序
- Python爬虫学习纪要(十二):BeautifulSoup相关知识点4
- Python爬虫学习笔记二:百度贴吧网页图片抓取
- Python爬虫--抓取单一页面上的图片文件学习
- python 下载 保存 图片的urllib.urlretrieve()函数 简单用法
- 【python小练】图片爬虫之BeautifulSoup4--转自博客园
- Python爬虫学习笔记一:简单网页图片抓取
- Python爬虫实战(1)——百度贴吧抓取帖子并保存内容和图片
- Python爬虫学习纪要(二):BeautifulSoup相关知识点2
- python爬取图片之urlretrieve保存本地