数据采集与融合技术第一次实践作业
Gitee地址:https://gitee.com/wang-zi-lian20031002/crawl_project
一、用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020)的数据,屏幕打印爬取的大学排名信息
1、核心代码与效果图展示
- 核心代码
# 目标网址
url = "http://www.shanghairanking.cn/rankings/bcur/2020"
# 获取网页内容
response = urllib.request.urlopen(url)
web_content = response.read()
# 使用BeautifulSoup解析网页
soup = BeautifulSoup(web_content, 'html.parser')
# 查找包含排名信息的表格或元素
table = soup.find('table') # 假设排名信息在一个表格里
# 表头
print("排名 学校名称 省市 学校类型 总分")
- 效果图展示
2.心得体会
通过本次作业,我认识到学习编程技术的必要性。在当今信息时代,数据获取和分析能力的重要性不言而喻。掌握爬虫技术,能够帮助我们快速获取所需信息,提高工作效率。同时,这也激发了我继续深入学习编程的兴趣和动力。爬虫技术在现实生活中具有广泛的应用场景。本次作业让我亲身体验到了爬虫技术的实用性。通过短短几行代码,我们就能够从网站上获取到所需的大学排名信息,这对于学术研究、教育咨询等领域具有很高的价值。
二、用requests和re库方法设计某个商城(自已选择)商品比价定向爬虫,爬取该商城,以关键词“书包”搜索页面的数据,爬取商品名称和价格
1、核心代码与效果图展示
- 核心代码
#request获取网页数据
url=r'http://search.dangdang.com/?key=%B1%CA%BC%C7%B1%BE%B5%E7%C4%D4&act=input'
try:
req = requests.get(url)
req.raise_for_status()
req.encoding=req.apparent_encoding
except:
print("error im request")
data=req.text
#获取商品信息部分数据(在<ul></ul>)里
match=re.search('''<ul class="bigimg cloth_shoplist" id="component_59">.*</ul''',data)
#start,end分别匹配每一件商品信息的开头和结尾(单件商品信息在<li></li>里)
data=data[match.start():match.end()]
start=re.search('<li',data)
end=re.search('</li',data)
i=0
while end!=None:
#获取单件商品的信息my_data
my_data=data[start.end():end.start()]
#获取商品的price
price_sta_match=re.search('<span class="price_n">',my_data)
price_end_match=re.search('</span>',my_data)
price=my_data[price_sta_match.end()+5:price_end_match.start()]
#获取商品name
title_match=re.search('title="',my_data)
ddclick_match=re.search('ddclick',my_data)
name=my_data[title_match.end():ddclick_match.start()].strip()
name=name[:-1]
#输出编号,price,name
print(i,price,name,sep='\t')
- 效果图展示
2、心得体会
通过这次作业,我对Python网络爬虫技术有了更深入的了解。尤其是在使用requests库和re库进行网页数据请求和解析的过程中,我学会了如何高效地获取目标信息。同时,这次实践也锻炼了我的编程能力和解决问题的能力。
在爬取数据的过程中,正则表达式发挥了关键作用。它能够帮助我们快速地从复杂的HTML文档中提取所需信息。然而,正则表达式的编写也具有一定的挑战性,需要细心和耐心。通过这次实践,我更加认识到熟练掌握正则表达式的重要性。
三、爬取一个给定网页( https://xcb.fzu.edu.cn/info/1071/4481.htm )或者自选网页的所有JPEG和JPG格式文件
1、核心代码与效果图展示
- 核心代码
BASE_PATH = os.path.dirname(os.path.abspath(__file__))
DIR_NAME = os.path.join(BASE_PATH, "img")
if not os.path.exists(DIR_NAME):
os.makedirs(DIR_NAME)
response = requests.get(
url="https://news.fzu.edu.cn/info/1011/38566.htm",
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
}
)
# 正则匹配
pattern = r'src="(/__local/[^"]+\.jpg)"'
img_src_list = re.findall(pattern, response.text, re.S)
# 持久化存储
for url in img_src_list:
url_path = f"https://news.fzu.edu.cn/{url}"
res = requests.get(
url=url_path,
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
}
)
url_name = url.split('/')[-1]
file_path = os.path.join(DIR_NAME, url_name)
with open(file_path, mode="wb") as fj:
fj.write(res.content)
- 效果图展示
2、心得体会
通过这次作业,我对Python网络爬虫技术有了更加深入的了解。尤其是在使用requests库和正则表达式进行网页数据请求和解析的过程中,我学会了如何高效地获取目标网页上的图片资源。这次作业让我认识到,掌握网络爬虫技术对于数据采集和信息获取具有重要意义