首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >同时用R语言和Python爬取知乎美图

同时用R语言和Python爬取知乎美图

作者头像
数据小磨坊
发布2018-04-11 17:13:38
1.1K0
发布2018-04-11 17:13:38
举报
文章被收录于专栏:数据小魔方数据小魔方

学习Python已有两月有余,是时候检验下学习效果了,之前练习了不少R语言数据爬取,Python的爬虫模块还没有来得及认真入门,乱拼乱凑就匆忙的开始了,今天就尝试着使用R+Python来进行图片爬取,完成一个简单得小爬虫。

目标网址在这里:

https://www.zhihu.com/question/35931586/answer/206258333

R语言版:

library(rvest) library(downloader) url<-"https://www.zhihu.com/question/35931586/answer/206258333"

link<- read_html(url)%>% html_nodes("div.RichContent-inner>span")%>% html_nodes("img")%>%html_attr("data-original")%>%na.omit #借助Chrome的审查元素功能,借助其路径copy功能精准定位图片所在节点

link<-link[seq(1,length(link),by=2)] #剔除无效网址 Name<-sub("https://pic\\d.zhimg.com/v2-","",link) #提取图片名称 dir.create("D:/R/Image/zhihu/zhihu0807") #建立存储文件夹 setwd("D:/R/Image/zhihu/zhihu0807") #锁定临时目录 for(i in 1:length(link)){ download(link[i],Name[i], mode = "wb") } #下载过程:

-----------

Python:

---------

import requests from bs4 import BeautifulSoup import os import re import urllib

目标网址:

url="https://www.zhihu.com/question/35931586/answer/206258333"

header = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36'} page=requests.get(url,headers=header) #读取网址 soup=BeautifulSoup(page.text,'lxml') #解析地址

link_list=soup.select("div[class='RichContent-inner'] span img")[::2] #使用CSS选择器提取图片 地址所在节点

os.makedirs("D:/Python/Image/zhihu0807") os.chdir('D:/Python/Image/zhihu0807') for link in link_list: mylink=link.get('data-original') #使用get方法提取图片地址: name=re.findall(r"v2-.*?\.jpg",mylink)[0] #匹配图片名称 urllib.request.urlretrieve(mylink,name) #下载

完整代码:

R语言版:

library(rvest) library(downloader) url<-"https://www.zhihu.com/question/35931586/answer/206258333" link<- read_html(url)%>% html_nodes("div.RichContent-inner>span")%>%html_nodes("img")%>%html_attr("data-original")%>%na.omit link<-link[seq(1,length(link),by=2)] #剔除无效网址 Name<-sub("https://pic\\d.zhimg.com/v2-","",link) #提取图片名称 dir.create("D:/R/Image/zhihu/zhihu0807") #建立存储文件夹 setwd("D:/R/Image/zhihu/zhihu0807") #锁定临时目录 for(i in 1:length(link)){ download(link[i],Name[i], mode = "wb") } #下载过程:

Python版:

import requests from bs4 import BeautifulSoup import os import re import urllib url="https://www.zhihu.com/question/35931586/answer/206258333" header = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36'} page=requests.get(url,headers=header) soup=BeautifulSoup(page.text,'lxml') link_list=soup.select("div[class='RichContent-inner'] span img")[::2] os.makedirs("D:/Python/Image/zhihu0807") os.chdir('D:/Python/Image/zhihu0807') for link in link_list: mylink=link.get('data-original') name=re.findall(r"v2-.*?\.jpg",mylink)[0] urllib.request.urlretrieve(mylink,name)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据小魔方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档