2023数据采集与融合技术实践作业一

作业①

实验要求

用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020 )的数据,屏幕打印爬取的大学排名信息。
输出信息:
排名 学校名称 省市 学校类型 总分
1 清华大学 北京 综合 852.5
2......

作业内容

import re

url='http://www.shanghairanking.cn/rankings/bcur/2020'
html=urllib.request.urlopen(url).read().decode()
school_pattern = r'<div class="ranking( top\d+)?" data-v-4645600d>\s+(\d+)\s+</div></td><td class="align-left" data-v-4645600d><div class="univname-container" data-v-4645600d><div class="logo" data-v-4645600d><img alt="(.*?)"'
ranking_schools=re.findall(school_pattern,html,re.DOTALL)
school_in_pattern=r'<!----> <!----> <!----></div></div></td><td data-v-4645600d>(.*?)<!----></td><td data-v-4645600d>(.*?)<!----></td><td data-v-4645600d>(.*?)</td>'
school_in=re.findall(school_in_pattern,html,re.DOTALL)


for i,(ranking,rank,school) in enumerate(ranking_schools):
   print("排名"+(ranking.strip() if ranking else rank.strip()))
   print("学校:"+school.strip())
   print("位置:"+school_in[i][0].strip())
   print("类型:"+school_in[i][1].strip())
   print("总分:"+school_in[i][2].strip())
   print("="*30)

心得体会

对python的各种库体会更深,了解到了更多的python爬取网页的方法。

作业②

实验要求

用requests和re库方法设计某个商城(自已选择)商品比价定向爬虫,爬取该商城,以关键词“书包”搜索页面的数据,爬取商品名称和价格。
输出信息
序号 价格 商品名
1 65.00 xxx
2......

实验内容

import urllib.request
from bs4 import UnicodeDammit

url="http://search.dangdang.com/?key=%CA%E9%B0%FC&act=input"
html=urllib.request.urlopen(url)
html=html.read()
dammit=UnicodeDammit(html,["utf-8","gbk"])#使用UnicodeDammit认定data的编码方式
data=dammit.unicode_markup#把.unicode_markup变换成Unicode编码
soup=BeautifulSoup(data,"lxml")
lis = soup.select("ul[class='bigimg cloth_shoplist'] li")
for li in lis:
    #print(li)
    title = li.select('p[class="name"]')[0].text
    price=li.select('p[class="price"]')[0].text
    print(title,price)

心得体会

学会了python中的bs4库中的BeautifulSoup的用法,还学会了如何改变爬取下来的界面的编码。对python的使用更加的精进了。

作业③

实验要求

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

实验内容

import urllib.request
from bs4 import UnicodeDammit

url="https://xcb.fzu.edu.cn/info/1071/4481.htm"
url_head='https://xcb.fzu.edu.cn'
html=urllib.request.urlopen(url)
html=html.read()
dammit=UnicodeDammit(html,["utf-8","gbk"])#使用UnicodeDammit认定data的编码方式
data=dammit.unicode_markup#把.unicode_markup变换成Unicode编码
soup=BeautifulSoup(data,"lxml")
lis=soup.select('p[class="vsbcontent_img"] img')

for i,li in enumerate(lis):
    title = li.get('src')
    print(url_head+title)
    file_dic='D:\\代码\\venv\\数据采集与融合技术\\tuku\\'

    f=open(file_dic+str(i)+'.jpg','wb')
    f.write(urllib.request.urlopen(url_head+title).read())

心得体会

通过这次的学习,学会了如何将网页上的图片爬取到本地,了解到了网页爬取中爬取图片的方法,加深了我对python爬取网页的了解。

posted @ 2023-09-21 16:24  cyosyo  阅读(71)  评论(0)    收藏  举报