首页 > Python资料 博客日记
【Python】简单的爬虫抓取
2024-09-08 10:00:04Python资料围观47次
本篇文章分享【Python】简单的爬虫抓取,对你有帮助的话记得收藏一下,看Python资料网收获更多编程知识
效果:抓取某个学校网站的教授名录,并获取研究方向。
由于网站使用的都是明文,所以抓起来没什么难度,且平时访问量小,很值得用来练习。
代码如下,解释请见注释
import time
import requests
from bs4 import BeautifulSoup
# 创建一个包含浏览器头部信息的字典,模拟浏览器,可以骗过一些简单的反爬虫网站
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
# 可以根据需要添加更多的头部信息,比如:
# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
# 'Accept-Language': 'en-US,en;q=0.5',
# 'Accept-Encoding': 'gzip, deflate, br',
# 'DNT': '1', # Do Not Track 请求头表明用户不希望被追踪
# 'Connection': 'keep-alive',
# 'Upgrade-Insecure-Requests': '1',
# 如果需要处理cookies,也可以在这里设置'Cookie'字段
# 'Cookie': 'your_cookie_here',
}
# 获取教师信息
def request_teacher_info(url):
# 发送GET请求,并带上headers
response = requests.get(url, headers=headers)
content = response.content.decode('utf-8')
# 确保请求成功
if response.status_code == 200:
soup = BeautifulSoup(content, 'html.parser')
# 抓取div标签下,class为infobox的标签
infobox_div = soup.find('div', class_='infobox')
# 抓取span标签,class为'h_info',并且包含"姓名"字样
name_span = infobox_div.find('span', class_='h_info', string='姓名:')
# 抓取"姓名"字样后一个字样,即实际姓名
name = name_span.find_next_sibling('span').get_text(strip=True)
# 同样的方法抓研究方向,想继续抓,还有邮箱,发表论文这些,都是一样的套路
research_direction_span = infobox_div.find('span', class_='h_info', string='研究方向:')
research_direction = research_direction_span.find_next_sibling('span').get_text(strip=True)
print(f"{name} 研究方向:{research_direction}")
else:
print(f"请求失败,状态码为:{response.status_code}")
# 获取教师列表
def request_teacher_list(url):
# 发送GET请求,并带上headers
response = requests.get(url, headers=headers)
content = response.content.decode('utf-8')
link_list = []
# 确保请求成功
if response.status_code == 200:
# 使用BeautifulSoup解析HTML内容
soup = BeautifulSoup(content, 'html.parser')
right_list_r = soup.find('div', class_='right-list r')
# 教师列表
teacher_lists = right_list_r.find_all('div', class_='teacher-list')
for teacher_list in teacher_lists:
job_type = teacher_list.find("h2", class_="title l")
# 这些打印信息可以忽略,重要信息已在request_teacher_info()中展示
print(job_type.get_text(strip=True))
professor_ul = teacher_list.find_all('ul')[0]
a_list = professor_ul.find_all('a', href=True)
for a in a_list:
link = a['href']
link_list.append(link)
print(link)
print("=" * 50)
return link_list
link_list1 = request_teacher_list("https://example.com")
for link in link_list1:
request_teacher_info(link)
# time.sleep(0.5)
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj