import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
# 配置
BASE_URL = 'https://example.com' # 替换为目标网站的URL
HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
ARTICLE_SELECTOR = 'div.article-title a' # 根据目标网站的HTML结构修改选择器
def fetch_page(url):
"""
发送HTTP GET请求并返回页面内容。
:param url: 要访问的URL
:return: 页面内容(字符串)
"""
try:
response = requests.get(url, headers=HEADERS)
response.raise_for_status() # 如果请求失败,抛出HTTPError异常
return response.text
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
return None
def parse_page(content):
"""
解析页面内容并提取文章标题和链接。
:param content: 页面内容(字符串)
:return: 文章标题和链接的列表
"""
soup = BeautifulSoup(content, 'html.parser')
articles = []
for article in soup.select(ARTICLE_SELECTOR):
title = article.get_text(strip=True)
link = urljoin(BASE_URL, article['href'])
articles.append({'title': title, 'link': link})
return articles
def main():
"""
主函数,负责爬取网页并打印文章标题和链接。
"""
url = BASE_URL # 起始URL
visited_urls = set() # 用于记录已访问的URL,避免重复访问
while url:
if url in visited_urls:
break
visited_urls.add(url)
print(f"正在爬取: {url}")
page_content = fetch_page(url)
if page_content:
articles = parse_page(page_content)
for article in articles:
print(f"标题: {article['title']}, 链接: {article['link']}")
# 假设每篇文章页面都有一个'next'按钮指向下一页(这需要根据实际情况调整)
# 这里我们简单地假设下一页的链接在一个特定的div中,并且有一个特定的类名
next_page_selector = 'div.pagination a.next' # 根据目标网站的HTML结构修改选择器
soup = BeautifulSoup(page_content, 'html.parser')
next_page_element = soup.select_one(next_page_selector)
if next_page_element:
url = urljoin(BASE_URL, next_page_element['href'])
else:
url = None # 没有下一页,结束循环
else:
url = None # 页面内容获取失败,结束循环
if __name__ == "__main__":
main()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
压缩包文件是一个简单的Python爬虫示例,它使用requests库来发送HTTP请求,并使用BeautifulSoup库来解析HTML内容。这个爬虫将访问一个网页,提取所有文章标题和链接,并将它们打印到控制台。 注意: 1、请将BASE_URL替换为你想要爬取的目标网站的URL。 2、ARTICLE_SELECTOR和next_page_selector需要根据目标网站的HTML结构进行修改。这两个选择器分别用于选择文章标题的链接和下一页的链接。 3、这个爬虫没有实现递归爬取(即,它不会从一篇文章页面跳转到另一篇文章页面),也没有实现深度优先或广度优先搜索。它只会按照页面上的“下一页”链接进行简单的线性爬取。 4、在实际使用中,请遵守目标网站的robots.txt文件和服务条款,不要进行恶意爬取或过度请求。 5.这个爬虫没有处理JavaScript渲染的内容。如果目标网站使用JavaScript动态加载内容,你可能需要使用像Selenium这样的浏览器自动化工具。
资源推荐
资源详情
资源评论
收起资源包目录
通过python使用requests库模拟发送http请求并解析.rar (1个子文件)
通过python使用requests库模拟发送http请求并解析.py 3KB
共 1 条
- 1
资源评论
图表制作解说(目标1000个图表)
- 粉丝: 947
- 资源: 305
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- apache-maven-3.6.1-bin.zip
- c593f5fc-d4a7-4b43-8ab2-51afc90f3f62
- IIR滤波器参数计算函数
- WPF树菜单拖拽功能,下级目录拖到上级目录,上级目录拖到下级目录.zip
- CDH6.3.2版本hive2.1.1修复HIVE-14706后的jar包
- 鸿蒙项目实战-天气项目(当前城市天气、温度、湿度,24h天气,未来七天天气预报,生活指数,城市选择等)
- Linux环境下oracle数据库服务器配置中文最新版本
- Linux操作系统中Oracle11g数据库安装步骤详细图解中文最新版本
- SMA中心接触件插合力量(插入力及分离力)仿真
- 变色龙记事本,有NPP功能,JSONview功能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功