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

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库和正则表达式进行网页数据请求和解析的过程中,我学会了如何高效地获取目标网页上的图片资源。这次作业让我认识到,掌握网络爬虫技术对于数据采集和信息获取具有重要意义

posted @ 2024-10-15 23:22  lzwang  阅读(11)  评论(0编辑  收藏  举报