python爬虫编程习题

自选一个大学,从大学的主页上爬出机构的URL、名称、简要介绍、电话、邮箱。再进入下属机构的主页,从中爬出下属机构的URL、名称、简要介绍、电话、邮箱。所有爬出的数据保存于同一个文件中。
(建议使用beautifulsoup,等基础入门的,因为是初学者一名)😭

现在大学机构和下属都是不同的二级域名,结构都不一样,采集这些不太现实。除非都在一个域名下并且结构一致。

要练习可以爬豆瓣电影top 250什么的

from bs4 import BeautifulSoup
import requests
from openpyxl import Workbook

header = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}

baseurl = "https://movie.douban.com/top250?start="
data=[]
for i in range(2):#采集前50,采集完2改为10
    url = baseurl + str(i*25)
    html=requests.get(url,headers=header).text
    soup = BeautifulSoup(html,"html.parser")
    items=soup.select('.grid_view li')
    for item in items:
        url=item.select('a')[0]['href']#网址
        print(url)
        imgurl=item.select('img')[0]['src']#图片网址
        title=''.join([span.get_text() for span in item.select('.hd a span')])#电影标题
        info=item.select('.bd p')[0].get_text().strip()#导演,主演
        rating_num=item.select('.rating_num')[0].get_text()#评分
        remarknum=item.select('.star span')[-1].get_text()#评价人数
        inq=item.select('.inq')[0].get_text()#简介

        data.append([url,imgurl,title,info,rating_num,remarknum,inq])

wb=Workbook()
sheet=wb.worksheets[0]#得到默认的工作簿
sheet.title="豆瓣top250"#改名称
sheet.append(['网址','图片网址','电影标题','导演,主演','评分','评价人数','简介'])
for item in data:
    sheet.append(item)


wb.save("豆瓣top250.xlsx")
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

辛苦回答,希望投喂。

import requests
from bs4 import BeautifulSoup
import csv

def crawl(url):
  # 发送 HTTP GET 请求并获取网页内容
  resp = requests.get(url)
  html_content = resp.text
  # 使用 BeautifulSoup 解析网页
  soup = BeautifulSoup(html_content, 'html.parser')
  # 从网页中提取所需信息
  # 机构的 URL
  link = url
  # 机构的名称
  name = soup.select_one('h1').text
  # 机构的简要介绍
  description = soup.select_one('p').text
  # 机构的电话
  phone = soup.select_one('.phone').text
  # 机构的邮箱
  email = soup.select_one('.email').text
  # 下属机构的信息列表
  sub_units = []
  # 查找下属机构的信息
  for unit in soup.select('.unit'):
    # 下属机构的 URL
    sub_link = unit.select_one('a')['href']
    # 下属机构的名称
    sub_name = unit.select_one('h2').text
    # 下属机构的简要介绍
    sub_description = unit.select_one('p').text
    # 下属机构的电话
    sub_phone = unit.select_one('.phone').text
    # 下属机构的邮箱
    sub_email = unit.select_one('.email').text
    # 将下属机构的信息添加到列表中
    sub_units.append({'link': sub_link, 'name': sub_name
# 打开 CSV 文件
with open('units.csv', 'w', newline='') as csvfile:
  # 创建 CSV 写入器
  writer = csv.writer(csvfile)
  # 写入 CSV 文件头
  writer.writerow(['URL', '名称', '简要介绍', '电话', '邮箱'])
  # 写入机构信息
  writer.writerow([link, name, description, phone, email])
  # 写入下属机构信息
  for sub_unit in sub_units:
    writer.writerow([sub_unit['link'], sub_unit['name'], sub_unit['description'], sub_unit['phone'], sub_unit['email']])
crawl('https://www.whu.edu.cn/')