打鼓社区-打鼓教学-最新活动 打鼓社区-打鼓教学-最新活动

凯撒,南京天气,赵嘉敏-打鼓社区-打鼓教学-最新活动

现在,在人工智能和机器学习风潮的影响之下,Python言语的受欢迎程度急速攀升,许多人都表达出想要学习python的期望,来丰厚自己的职业技术,而因为各式各样的原因,很大一部分人半途抛弃,我也是从这个阶段过来的。那么咱们应该怎样学习一门新技术而不至于「从入门到抛弃」呢?我联想到之前看过的一句话「Start With Why」,这句话来自于西蒙.斯涅克,他是一名作家,一同也是一家营销顾问公司的创始人。

这本书讲了一个黄金规律:干事之前首要想为什么(why),其次想如何做(how),终究再想做什么(what),咱们学习爬虫也是相同,首要要想我能用爬虫做什么,其次再想怎样做,简单点说便是:带着问题去学习。

最近我的一个教师朋友找打我,说想要学习爬虫,原因是最近各个地区刚刚考完二模,他想把网上的卷子爬下来,给他的学生们操练。你看,他的意图很明晰,便是爬卷子。所以,我花了一天的时刻教会了他,他花了两天的时刻完结了这个项目,下面咱们一同看一下,尽管还有许多需求完善的当地,但根本现已处理了问题。

这个网站是新东方的网站,里边很明晰的整理了每一年各个地区的二模试卷,首要数据源就有了。接着咱们来想怎样爬(what),咱们首要要把每个区一切试题的链接拿下来,每一个链接点进去是这样的:

试卷的正文页面包含了试卷标题和正文,正文是由图片组成的,那么咱们还需求把每一个试卷的一切图片拿出来,终究组合成一张完好的试卷

终究一个比如的结果是下面这样的,咱们要做的便是把各个地区的各个科目都依照这样的方法整理出来。传闻我的那位朋友不只仅把自己所教的数学试卷悉数拿了下来,还把其他各个学科的试卷都拿了下来,现在在校园里边很受其他教师欢迎呢。

下面咱们就一步步来完结这个小项目。

这个项目很简单,只需求用到3个根本的Python库就能完结:

import requests
import os
from lxml import etree

第一步需求拿出一切试卷的链接,而且终究回来一个url的列表(list):

def get_paper_url():
url = 'http://zhongkao.xdf.cn/201904/10891103.html'
r = requests.get(url=url)
r.encoding = 'utf-8'
html = etree.HTML(r.text)
url_contend = html.xpath('//div[@class="air_con f-f0"]/table/tbody/tr/td/p/a/@href')
return url_contend

第二步,取得每一张试卷的称号和一切的图片链接:

def get_image_url():
url_list = []
url = 'http://zhongkao.xdf.cn/201904/10891174.html'
url_list.append(url)
r = requests.get(url=url)
r.encoding = 'utf-8'
html = etree.HTML(r.text)
title = html.xpath('//p[@class="title1 f-f0"]/text()')[0]
print(url)
main_url = url.replace('.html', '')
# 核算总共有多少页面
uls = html.xpath('//div[@class="ch_conpage hdd"]/ul/li')
page_num = len(uls) - 5
for page in range(page_num-1):
page_url = main_url + '_' + str(page+2) + '.html'
url_list.append(page_url)
return title, url_list

第三步,依据之前取得的图片链接,下载这些图片:

def get_image():
title, url_list = get_image_url()
img_num = 1
for url in url_list:
r = requests.get(url=url)
r.encoding = 'utf-8'
html = etree.HTML(r.text)
img_url = html.xpath('//div[@class="air_con f-f0"]//img/@src')[0]
save_img(img_url, title, img_num)
img_num += 1
print('hahah')

第四步,把下载的图片,依照不同的试卷类型,分类保存到文件夹下:

def save_img(img_url, file_name, img_num):
img_response = requests.get(url=img_url)
now_path = os.getcwd()
img_path = os.path.join(now_path, 'tupian')
if not os.path.exists(img_path):
os.makedirs(img_path)
img_path = os.path.join(img_path, file_name)
if not os.path.exists(img_path):
os.makedirs(img_path)
path = img_path + '/' + str(img_num) + '.jpg'
with open(path, "wb") as f: # 保存的文件名 保存的方法(wb 二进制 w 字符串)
f.write(img_response.content)
print('ok')

你看,短短的四部分,50行简略的代码就能获取到简直一切的试卷,关于一个教师来说,这项技术所节约的时刻超乎幻想,你能够试想一下,今后他的学生简直再也不需求买试卷,这种人不管在哪里,领导怎样会不喜欢呢?期望我们也能结合自己的作业场景,真实把学到的内容用起来。

之后我会连续给我们介绍爬虫在各行各业中的使用,而且带领我们一同学习,敬请期待。

作者:admin 分类:推荐新闻 浏览:205 评论:0