これは、クライミング対策のない最も単純なクローラーです。間違ったドアに行くドナーは迂回することができます~~~
一つ、問題
エピデミックの影響を受けて、すべての学校のコースがオンライン教育を採用し、さまざまなコースが出現しました。すべてのコースグループのQRコードを一度に検索して問い合わせたいのですが、どうすればよいですか?
2.原則
1.ウェブページの写真のリンク形式を確認します
学校が指定したウェブサイトを開いてコースのQRコードを照会し、画像に対応するhttpリクエストによって返された画像リンクを見つけ、すべての画像リンクがhttp://xxx.cn/os/pic/+课程号-课序号+.jpg
同じ形式であることを確認します。したがって、対応するコース番号-コースシリアル番号が接続されている限り、クロールを完了することができます。
2.リクエストパッケージを使用して、関連するWebページの画像をクロールします
リクエストパッケージの最も単純なクローラー:
import requests
r = requests.get(url)
その後、保管作業をさらに完了することができます。
三、解く
#从csv读取所有课程号-课序号,并拼接成网页链接
import pandas as pd
csv_data = pd.read_csv('D:/.../999 project/5 testing_file/num.csv', encoding = 'ANSI')
urls = []
for i in csv_data['num']:
urls.append("http://xxx.cn/os/pic/"+i+".jpg")
import requests
import os
root = "C://...//Desktop//lesson_QR_code/"
num = 0
#爬取课程二维码
for url in urls:
num = num + 1
path = root + url.split('/')[-1]
try:
#如果不存在该目录,创建目录
if not os.path.exists(root):
os.mkdir(root)
#如果文件不存在,爬取二维码并保存,若存在则打印“文件已存在”
if not os.path.exists(path):
r = requests.get(url)#实际上只有这一行是爬虫
with open(path, 'wb') as f:
f.write(r.content)#将二进制内容写入文件
f.close()
print(num,"文件保存成功")
else:
print(num,"文件已存在")
except:
#如果发生异常,打印发生异常的课程号
print(url.split('/')[-1])
print("爬取完毕")
四、反射
実際、コース番号-コース番号情報は、教育管理システムから手動でコピーして貼り付けることができます。ブロガーは現在、教育行政システムにログインして確認コードの問題を解決していません。問題が解決した後、手動でコピーして貼り付ける必要はありません(この問題が解決した場合は、コードを使用してレッスンを取得できます...)。