这一学期我们的python课又课程设计,得做一个程序然后进行答辩,今天我就在线上进行了答辩,我的选题选的是爬虫,用xpath方法进行爬取百度的图片。我把我的答辩经过和老师提问的问题来大概描述一下
问题1
首先我的老师在爬虫的专业知识上只问了一个headers的用法。我说是一个简单的反爬,要不然浏览器会禁止这个爬虫访问,这个回答有点小问题就是应该是服务器会禁止爬虫去访问而不是浏览器,之后他问了一下这个use_agent在哪里能找到,可能是我在前端方面讲的也多,我甚至写了一个前端的小页面来阐述html的一些知识
问题2
老师还是问了一些基础知识,比如说文件的写入方式,这个真的是好久没有管了然后答的不怎么样
因为我用的是with open来写入文件的,老师问了一个with的用法,它是干什么的,这个属实是知识盲区了 with的作用就是自动调用close()方法
之后老师问了后面的‘wb’是什么意思:以二进制写入文件,还有w之类的大家也可以复习一下
我这里还调用了os模块,在之前的几个同学里也了os模块的几个操作
最后因为线上答辩,只有五个问题,其中三个关于代码的问题,还是可以的,最后附上源码
#导入模块
import requests
import os
from lxml import etree
#利用os模块创建文件
if not os.path.exists("G:\python课程设计\debug"):
os.mkdir("G:\python课程设计\debug")
url = 'https://pic.netbian.com/4kdongwu/' #获取页面网址
#简单的反爬,使用headers将爬虫伪装起来
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.62'
}
response = requests.get(url=url,headers=headers)#使用request.get方法获取html页面
page_text = response.text #获取html页面中的文本内容
tree = etree.HTML(page_text) #调用HTML类对HTML文本进行初始化,成功构造XPath解析对象
li_list = tree.xpath('//div[@class="slist"]/ul/li') #利用html知识进行定位
for li in li_list :
img_src = 'http://pic.netbian.com' + li.xpath('./a/img/@src')[0] #在li标签下再次定位到图片
img_name = li.xpath('./a/img/@alt')[0] + 'jpg' #获取图片名称
img_name = img_name.encode('iso-8859-1').decode('gbk') #解决乱码问题
img_data = requests.get(url=img_src,headers=headers).content #爬取图片
img_path ='G:\\python课程设计\\debug\\'+img_name #获取图片路径
with open(img_path,'wb') as fp: #将爬取到的文件写入文件夹
fp.write(img_data)
print(img_name,'over'
最后这几天还有线性代数,高等数学,c语言,大学物理。今天刚刚把答辩和思修考完