自选一个大学,从大学的主页上爬出机构的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")
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!辛苦回答,希望投喂。
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/')