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()
图表制作解说(目标1000个图表)
- 粉丝: 1359
- 资源: 431
最新资源
- 一对一MybatisProgram.zip
- 时变动态分位数CoVaR、delta-CoVaR,分位数回归 △CoVaR测度 溢出效应 动态 Adrian2016基于分位数回归方法计算动态条件在险价值 R语言代码,代码更数据就能用,需要修改的
- 人物检测37-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 人物检测26-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 人和箱子检测2-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 清华大学2022年秋季学期 高等数值分析课程报告
- GEE错误集-Cannot add an object of type <Element> to the map. Might be fixable with an explicit .pdf
- 清华大学2022年秋季学期 高等数值分析课程报告
- 矩阵与线程的对应关系图
- 人体人员检测46-YOLO(v5至v9)、COCO、Darknet、TFRecord数据集合集.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈