这是制作的第一个爬虫脚本,主要实现的功能就是解析指定网站中指定的照片地址,然后保存到本地。
代码部分:
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
i = 0
def get_content(page):
global i
page = str(page)
url = "网站地址?page=" + page #保证可以获取多页内容
html = urlopen(url)
bsObj = BeautifulSoup(html, "html.parser")
images = bsObj.findAll("img", {"src": re.compile("\d+\.jpg")}) #使用正则把图片的URL筛选出来
while i < 5: #i是页数
for image in images: #使用for循环抓取不同页数的图片
photo_url = "网站的绝对地址" + image["src"] #图片地址
print(photo_url) #输出图片地址
f = open(str(re.sub(r"\D+", "0", image["src"])) + ".jpg", "wb") # 利用正则替换命名图片名称,并保存到当前文件夹
req = urlopen(photo_url)
buf = req.read() # 读出文件
f.write(buf) # 写入文件
print("正在下载中...")
i = i + 1
print ("这是第", i, "页")
get_content(i) #进行下一页的抓取
get_content(i)
这是我完成的第一个比较成功的爬虫脚本,整段代码很个性,不具有代表性。实现的功能也少之又少,可能不能被别的网址所使用,主要是看思路。写完这个脚本以后,我暂时总结出了制作爬虫脚本的思路,可能不是很严谨。
- 找到需要爬取网站的HTML标签的规律
- 选择合适的筛选条件,可以利用正则或者是标签数量等条件
- 判断采集的信息是否有效
- 保存本地或数据库
这段代码是第一个爬取图片的代码,虽然花费了很多时间,解决了一些问题,但仍然存在一些问题需要在以后的版本中解决:
- 抓取更多不同的网页
- 利用异常机制控制页数,在没有图片的时候停止
- 在没有图片停止之后,自动开始抓取另一网页内容
- 改变文件保存的位置
本来是想多定义几个函数看着更清楚一些,但是能力有限,改的改的最后全都放到一个函数中了,不过下载图片的目的是实现了,还是不错的。