1024的问题我问了各路小伙伴,外加各种搜索,始终不得要领,最后只知道是<a href = "https://www.cloudflare.com/">cloudflare</a>这个网站的功劳,1024使用了他的服务,用来反爬虫!我虽然是小白,可我不是吃素的啊,待我有一天功成名就,回来接着搞你。
登天路的我走了没几步,坎坎坷坷,回头先把lofter的爬虫继续写完吧,跨域等反爬虫的手段,我将在路上一一把它们解决掉。
说回lofter,上次写的lofter爬虫,我和大侄子选的是最简单最好抓的一个页面,图片只有一页,规律也很好找,所以并没有什么特别难的地儿,这次换一个难一点的,薛小白儿:<code>http://siyueshige.lofter.com/</code>
薛小白儿有12页的高清照片,我先判断是否有:
网页元素
如果有的话,通过for 循环拼接url,然后再下载图片,直接上code:
<code># -- coding: UTF-8 --
import urllib
from bs4 import BeautifulSoup
import re
import os
import urllib2
import sys
reload(sys)
sys.setdefaultencoding('utf8')
url = "http://siyueshige.lofter.com/"
page_number = 1
now_url = url + "?page=" + str(page_number)
soup = BeautifulSoup(urllib.urlopen(now_url).read(), 'html.parser')
print soup
img_url_arr = soup.find_all('img', attrs={'src': re.compile('http://imglf')})
now_page_number = 0
user_name = soup.title.get_text()
def get_nextPage_img():
global href_list
global now_page_number
global img_url_arr
for number in href_list:
now_url = url + number['href'] # 现在的网址
print now_url
soup = BeautifulSoup(urllib.urlopen(now_url).read(), 'html.parser')
img_url_arr = soup.find_all('img', attrs={'src': re.compile('http://imglf')})
print img_url_arr
dowload_img()
now_page_number += len(img_url_arr)
def dowload_img(): # 开始下载图片
print "downloadnowpagenumer = "+str(now_page_number)
global img_url_arr
print img_url_arr
for index, img_url in enumerate(img_url_arr):
user_suffix = re.sub('.*(&type=)', '', img_url['src'])
img_index = now_page_number + index
print img_index
img_name = str(user_name) + str(img_index) + '.' + "jpg"
file_name = os.path.join('lofter',img_name)
urllib.urlretrieve(img_url['src'], file_name)
if name == 'main':
if (len(soup.find_all('a', attrs={'class': 'pgnum'})) >= 2):
href_list = soup.find_all('a', attrs={'class': 'pgnum'})
get_nextPage_img()
else:
dowload_img()</code>
待更()
网友评论