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

浏览: 1454

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

目标网址在这里:

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

image.png

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功能精准定位图片所在节点

image.png

link<-link[seq(1,length(link),by=2)]                 #剔除无效网址

Name<-sub("https://pic\\d.zhimg.com/","",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)    #下载

image.png

完整代码:

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/","",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)

欢迎关注魔方学院交流群:


推荐 0
本文由 杜雨 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册