原文链接: iOS程序员如何使用python写网路爬虫
以前看到叶孤城写的iOS程序员如何使用python写网路爬虫一文,就写了一个爬虫练练手,
最近发现原文章的用的Beautiful Soup 3 目前已经停止开发,推荐在现在的项目中使用Beautiful Soup 4
爬的网站连接都不能用了,写下我这边修改的一些东西,仅供参考
欢迎大家来吐槽
<pre>
$sudo pip install beautifulsoup4 或
$sudo easy_install beautifulsoup4 </p>
需要注意的是初始化的时候要使用 BeautifulSoup(html, "html.parser")
</pre>
使用的主网站连接:千图网
页面结构布局如下图,主要是<div class='show-area-pic'
然后拿到其中的img即可了
具体的一些操作细节可以参考iOS程序员如何使用python写网路爬虫一文,我就不多赘述了,默认是保存在桌面上新建了一个58pic的文件夹里,也可以修改一下存到sqlite里,也很简单的,以后再更新
详细代码如下:
<pre>
--coding:utf-8--
! /usr/bin/python
import math
import urllib
import urllib2
import os
import request
import sqliteManager
import sys
from bs4 import BeautifulSoup;
def getAllImageLink(start,end):
i = start
path = os.path.expanduser(r'~/Desktop/')
folder = '58pic'
fullPath = path + folder
os.chdir(path)
if os.path.exists(fullPath) == False :
os.mkdir(folder)
else:
# print (unicode('已经存在文件夹: rosi','utf-8'))
print ('has exist')
os.chdir(fullPath)
mainPath = os.getcwd()
while (i < end):
os.chdir(mainPath)
url = 'http://www.58pic.com/yuanchuang/%d.html' % i
try:
response=urllib2.urlopen(url,data=None,timeout=120)
# response=.get(url)
except urllib2.URLError as e:
print ('%s : %s' % (url,e.reason))
i += 1
continue
print (url)
html = response.read()
if html.strip()=='':
print ('not exist URL: %s',url)
continue
soup = BeautifulSoup(html, "html.parser")
liResult = soup.findAll('div',attrs={"class":"show-area-pic"})
for li in liResult:
imageEntityArray = li.findAll('img')
for image in imageEntityArray:
title = image.get('title')
href = image.get('src')
splitList = href.split('/')
fileSavePath = mainPath + '/' + str(splitList[len(splitList) - 1])
urllib.urlretrieve(href,fileSavePath)
print (fileSavePath)
i = i + 1
if __name__ == '__main__':
start = 19840500
getAllImageLink(start,start + 100)
</pre>