python爬虫三:获取一个网易用户的所有图片(selenium+phantomjs)
【摘要】
在 python爬虫二:网易博客的图片 中的代码只需要一篇博客的url就可以把图片全部下载下来
如果想把一个网易博客用户的所有图片都下载下来,只需要利用搜索算法把他的所有博客url都找到即可。
对于网易博客来说,这一工作的难点在于,任何一篇博客的html代码中是不包含其他博客的url的,也就是说博客里面的互链...
在 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
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)