简述
下一阶段抓取目标对象"大知乎",本篇幅主要使用页面解析方式抓取大V关注对象用户头像。
目标对象
使用包
import time, os #定时抓取
import requests
from bs4 import BeautifulSoup
import datetime #精确时间
实现方式
依旧使用页面解析,获取图片URL,下载至本地保存
#异常捕获
try:
html = download_page(DOWNLOAD_URL + str(pageNum))
except:
print("抓取异常:" + DOWNLOAD_URL + str(pageNum))
time.sleep(2) #延迟N秒再抓取
html = download_page(DOWNLOAD_URL + str(pageNum))
#文件目录检查
if os.path.exists(DOWNLOAD_User) == False:
os.makedirs(DOWNLOAD_User)
#文件下载
if os.path.isfile(img_localhost) == False or os.path.getsize(img_localhost) == 0:
try:
img_req = requests.get(image_url, timeout=20)
with open(img_localhost, 'wb') as f:
f.write(img_req.content)
except:
now = datetime.datetime.now()
with open("error.log", 'w') as f:
f.write(now.strftime('%Y-%m-%d %H:%M:%S') + ' 【错误】当前图片无法下载,失效地址为:' + image_url)
#如果有下页,递归
if list_soup.find_all('button')[-1].text == "下一页":
beginSpider(pageNum + 1)
总结
- 因网络原因无法抓取、程序崩溃等问题,使用延迟递归解决
- 页面分布加载,导致每次仅能抓取当前页面前三条数据(未解决)