102102124杨恺晖数据采集与融合技术作业1

发布时间 2023-09-26 20:18:24作者: StephenCurryykh

******作业一 **


要求:用REQUESTS和BEAUTIFULSOUP库方法定向爬取给定网址(HTTP://WWW.SHANGHAIRANKING.CN/RANKINGS/BCUR/2020)的数据,屏幕打印爬取的大学排名信息。
输出信息:

排名 学校名称 省市 学校类型 总分

1 清华大学 北京 综合 852.5****

import urllib.request
from bs4 import BeautifulSoup
if __name__ == "__main__":
	headers = {
		'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
					  'AppleWebKit/537.36 (KHTML, like Gecko) '
					  'Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.76'
	}
	url = "http://www.shanghairanking.cn/rankings/bcur/2020"
	req = urllib.request.Request(url, headers=headers)
	data = urllib.request.urlopen(req)
	data = data.read().decode()
	soup = BeautifulSoup(data, "lxml")
	fp = open("./程序设计.txt", "w", encoding='utf-8')
	fp.write("排名 学校名称 省市 学校类型 总分\n")
	body = soup.find("tbody")
	for i, row in enumerate(body.find_all('tr')):
		if i >= 24:  # 输出前24条
			break
		row_data=[]
		for td in row.find_all('td'):
			row_data.append(td.get_text(strip=True))
		print(row_data)
		fp.write(row_data[0]+" "+row_data[1][0:4]+" "+
				 row_data[2]+" "+row_data[3]+" "+row_data[4]+ "\n")
	fp.close()
	print("任务完成")

运行结果:
image
心得体会:
深深体会到了python爬虫的魅力,对bs4有了进一步的了解,变得更加熟练了
作业二

要求:用requests和re库方法设计某个商城(自已选择)商品比价定向爬虫,爬取该商城,以关键词“书包”搜索页面的数据,爬取商品名称和价格。

import requests
import re
if __name__=="__main__":
	url="http://search.dangdang.com/?key=%CA%E9%B0%FC&act=input"
	headers={
		'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.36'
	}
	response=requests.get(url=url,headers=headers).text
	ex='<p class="name" name="title" ><a title="(.*?)"'
	ey='<span class="price_n">&yen;(.*?)</span>'
	ls1=re.findall(ex,response,re.S)
	ls2=re.findall(ey,response,re.S)
	print("序号 价格 商品名")
	for i in range(0,len(ls1)):
		print(str(i+1)+" "+str(ls2[i])+" "+ls1[i])

运行结果:
image
心得体会:
自己对re正则表达式的应用更加熟练,掌握了如何爬取静态页面
作业三

要求:爬取一个给定网页( https://xcb.fzu.edu.cn/info/1071/4481.htm )或者自选网页的所有JPEG和JPG格式文件
输出信息:将自选网页内的所有JPEG和JPG文件保存在一个文件夹中

import requests
import re
import os
if __name__=="__main__":
	if not os.path.exists('福大会议图片'):
		os.mkdir('福大会议图片')
	url="https://xcb.fzu.edu.cn/info/1071/4481.htm"
	headers={
		'user-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.36'
	}
	response=requests.get(url=url,headers=headers)
	response.encoding='utf-8'
	response=response.text
	ex='<img src=".*?".*?>'
	ls=re.findall(ex,response,re.S)
	number=1
	for i in ls:
		x='src="(.*?)"'
		m=re.findall(x,i)[0]
		newurl="https://xcb.fzu.edu.cn"+m
		tupian=requests.get(url=newurl,headers=headers).content
		imgpath='./福大会议图片/'+str(number)+'.jpg'
		with open(imgpath, 'wb') as fp:
			fp.write(tupian)
			print("下载成功!")
		number=number+1
	fp.close()
	print("任务完成")

运行结果如下:
image
心得体会:
加强了自己对requests的熟练度,掌握了如何运用爬虫爬取图片