简单的爬虫
程序员文章站
2022-07-02 22:31:13
import requests,re,time,osfrom lxml import etree#先定义一个图片保存的路径path = r'C:\Users\wxzhanghs\Desktop\必应'#判断路径是否存在,如果不存在则创建一个,存在则忽略folder= os.path.exists(path)if not folder: folder = os.mkdir(path)else: pass#定义要爬取的页数for page in range(9,10):...
import requests,re,time,os
from lxml import etree
#定义要爬取的页数
for page in range(9,10):
# 先定义一个图片保存的路径
path = fr'C:\Users\wxzhanghs\Desktop\必应\第{page}页'
# 判断路径是否存在,如果不存在则创建一个,存在则忽略
folder = os.path.exists(path)
if not folder:
folder = os.mkdir(path)
else:
pass
#第一页的网址是不带参数的
if page == 1:
url = 'https://bing.ioliu.cn'
#后面所有页码的网址都要加一个页码的参数
else:
url = f'https://bing.ioliu.cn/?p={page}'
#加入请求头,模拟浏览器发起请求,防止被反扒
user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36'
header = {'user-agent':user_agent}
req = requests.get(url=url,headers=header)
#转换返回的html网页
str1 = etree.HTML(req.content)
urls = str1.xpath('//img/@src')
names = str1.xpath('//h3/text()')
#定义一个图片编号
imgnum = 1
#同时遍历图片url和name列表
for (imgurl,imgname) in zip(urls,names):
# 直接获取图片分辨率很小,要替换成电脑屏幕的分辨率
imgurl1 = imgurl.replace('640x480', '1920x1080')
# 剔除图片描述中不需要的内容
imgname1 = imgname.split('(')[0]
#获取图片
img = requests.get(url=imgurl1, headers=header).content
#写入建好的文件夹中,因为有的文件名没有括号,所以会报错,这种情况下跳过
#无论失败还是成功都更新图片编号
try:
with open(path+f'\\{imgname1}.jpg'.format(imgnum),'wb') as f:
f.write(img)
print(f'获取第{page}页第{imgnum}张图片成功')
imgnum += 1
except FileNotFoundError:
print(f'获取第{page}页第{imgnum}张图片失败')
imgnum+=1
#在每页爬取完后,等待2秒,防止被禁
time.sleep(2)
本文地址:https://blog.csdn.net/weixin_44746955/article/details/110877539