数据采集实践第一次作业

发布时间 2023-09-28 01:55:47作者: xunfeng2310

作业一

要求:用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020 )的数据,屏幕打印爬取的大学排名信息

o 输出信息:

排名 学校名称 省市 学校类型 总分
1 清华大学 北京 综合 852.5
2......

代码如下:

from  urllib.request import urlopen
from bs4 import BeautifulSoup as bs
import re
url = 'http://www.shanghairanking.cn/rankings/bcur/2020'
date=urlopen(url).read().decode()
soup=bs(date,"lxml")
#tags=soup.find("div",attrs={'class':'rk-table'})
tags=soup.find_all('tr')
for tag in tags:
    t=tag.find('div',attrs={'class': 'ranking'})
    name = tag.find('a')
    c = tag.find_all('td', attrs={'data-v-4645600d': ''})
    if t != None and name != None:
        province = ''.join(re.findall('[\u4e00-\u9fa5]', c[2].text))
        type = ''.join(re.findall('[\u4e00-\u9fa5]', c[3].text))
        point = ''.join(re.findall('[0-9\.]', c[4].text))
        print(str(int(t.text))+':'+name.text[:len(name.text)-13]+','+province+','+type+','+point)

结果如下:

心得体会:

了解如何从互联网中爬取数据,加深了对BeautifulSoup和Requests的印象

作业二

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

o 输出信息:

序号 价格 商品名
1 65.00 xxx
2......

代码:

from  urllib.request import urlopen

import requests
from bs4 import BeautifulSoup as bs
import re

url ="http://search.dangdang.com/?key=%CA%E9%B0%FC&act=input"
#date=urlopen(url).read().decode()
#soup = bs(date, 'lxml')
#tags=soup.find_all('li',attrs={'ddt-pit':"1"})
#date=requests.get(url)
#date.encoding = date.apparent_encoding
#date.raise_for_status()
#soup=bs(date.text,"html.parser")
soup=bs(requests.get(url).text,'html.parser')
# tags=soup.find_all('span',attrs={'class':"price_n"})
# tag=soup.find_all('a',attrs={'title':" 书包小学生男女儿童学生书包新款小学生书包韩版休闲儿童包包1-3-6年级学生双肩 背包甜美可爱轻便休闲双肩背包"})
# print(tag)
tags=soup.find('ul',attrs={'class':"bigimg cloth_shoplist",'id':"component_59"})
tags=tags.find_all('li')
for tag in tags:
    print("商品序号:"+tag["ddt-pit"])
    print("商品名称:"+tag.find('a')['title'])
    print("商品价格:"+tag.find('span').text)

#print(tags)

结果如下:

心得体会:

多次尝试爬取数据错误,一直以为是代码错误,不断更改,最后发现是我在标签选择上出现错误,一定要更加仔细

作业三

o 要求:爬取一个给定网页( https://xcb.fzu.edu.cn/info/1071/4481.htm)或者自选网页的所有JPEG和JPG格式文件

o 输出信息:将自选网页内的所有JPEG和JPG文件保存在一个文件夹中

代码如下:

import urllib.request as req
from bs4 import BeautifulSoup
url = "https://xcb.fzu.edu.cn/info/1071/4481.htm"
response = req.urlopen(url).read().decode()
soup = BeautifulSoup(response, 'lxml')
save_folder = "G:\\student\\pycharm\\PyCharm 2023.2.1\\my-project\work\\test\\downloaded_images"
img_tags = soup.find_all('img')
count = 0
for img in img_tags:
    img_url = 'https://xcb.fzu.edu.cn/'+img['src']
    req.urlretrieve(img_url,'img'+str(count)+'.jpg')
    count+=1

结果如下:

心得体会

通过调用request的urlretrieve使得我们可以远程下载图片