python爬虫三:获取一个网易用户的所有图片(selenium+phantomjs)
在 python爬虫二:网易博客的图片 中的代码只需要一篇博客的url就可以把图片全部下载下来
如果想把一个网易博客用户的所有图片都下载下来,只需要利用搜索算法把他的所有博客url都找到即可。
对于网易博客来说,这一工作的难点在于,任何一篇博客的html代码中是不包含其他博客的url的,也就是说博客里面的互链是动态链接。为了解决这个问题,我们需要selenium和phantomjs,利用无头浏览器模拟用户点击,从而抓取url
代码:
-
#coding=utf-8
-
import re
-
import urllib.request
-
import os
-
from selenium import webdriver #########需要先安装selenium
-
-
user = 'jason0320' #########用户名
-
theurl = 'http://' + user + '.blog.163.com/blog'
-
thepath = 'D:\\wa' #########选择一个路径,确保其中存在url_path.txt
-
url_path = thepath + '\\' + 'url_path.txt' #存储该用户所有页面链接
-
phantomjs_path = "C:\phantomjs.exe" #########需要先下载phantomjs.exe
-
coding = 'gbk'#########这个要去网页源代码里面查
-
-
def get_all_url(): #获取该用户所有页面链接
-
already = []
-
all_url = ['http://jason0320.blog.163.com/blog/static/2703529720161017111442198']
-
fp = open(url_path,'r')
-
lines = fp.readlines()
-
for line in lines:
-
line = line.strip('\n')
-
if line == '':
-
continue
-
already.append(line)
-
all_url.append(line)
-
fp.close()
-
driver = webdriver.PhantomJS(executable_path=phantomjs_path,service_args=['--load-images=no']) #不加载图片,加快速度
-
i=0
-
fp = open(url_path,'w')
-
already = list(set(already))
-
for each in already:
-
fp.write(each+'\n')
-
while(i<len(all_url)):
-
url = all_url[i]
-
i=i+1
-
try:
-
driver.get(url)
-
except:
-
print('连接失败')
-
print(url)
-
continue
-
html = driver.page_source
-
url_list = re.findall('.blog.163.com/blog/static/[0-9]*',html)
-
for each in url_list:
-
u = 'http://' + user + each
-
if u not in all_url:
-
all_url.append(u) #广度优先搜索
-
if u not in already:
-
fp.write(u+'\n')
-
already.append(u)
-
print(i)
-
fp.close()
-
-
if __name__=='__main__':
-
get_all_url()
原理上,这个代码是可以获取所有url的,不过实际上这个程序受限于网络,网络不好的话会中断,所以实际上我只获取了jason0320的352个url
所有链接:
http://jason0320.blog.163.com/blog/static/2703529720166131113704
http://jason0320.blog.163.com/blog/static/27035297201478111818113
http://jason0320.blog.163.com/blog/static/27035297201508115710851
。。。。。。
http://jason0320.blog.163.com/blog/static/27035297201506105935484
http://jason0320.blog.163.com/blog/static/270352972015096472786
其中大部分被省略掉了,完整的后缀列表如下:
文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/nameofcsdn/article/details/77074899
- 点赞
- 收藏
- 关注作者
评论(0)