作者:杜雨,EasyCharts团队成员,R语言中文社区专栏作者,兴趣方向为:Excel商务图表,R语言数据可视化,地理信息数据可视化。
学习Python已有两月有余,是时候检验下学习效果了,之前练习了不少R语言数据爬取,Python的爬虫模块还没有来得及认真入门,乱拼乱凑就匆忙的开始了,今天就尝试着使用R+Python来进行图片爬取,完成一个简单得小爬虫。
目标网址在这里:
https://www.zhihu.com/question/35931586/answer/206258333
R语言版:
library(rvest)
library(downloader)
url
link% html_nodes("div.RichContent-inner>span")%>%
html_nodes("img")%>%html_attr("data-original")%>%na.omit
#借助Chrome的审查元素功能,借助其路径copy功能精准定位图片所在节点
link
Name
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
link% html_nodes("div.RichContent-inner>span")%>%html_nodes("img")%>%html_attr("data-original")%>%na.omit
link
Name
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)
欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754