如何使用Python与BeautifulSoup抓取网页href链接
嘿,我来帮你搞定用Python 3.4和BeautifulSoup抓取京都活动深度链接的事儿!
解决方案步骤
首先得确保你已经装了requests和bs4这两个依赖库,要是没装的话,在终端里跑这行命令:
pip install requests beautifulsoup4
接下来直接上可运行的代码,我已经针对你给出的HTML结构做了适配:
import requests from bs4 import BeautifulSoup # 目标页面URL target_url = "https://www.klook.com/city/30-kyoto/?p=1" try: # 发送请求获取页面源码 resp = requests.get(target_url) resp.raise_for_status() # 自动检测请求是否失败 # 用BeautifulSoup解析HTML soup = BeautifulSoup(resp.text, 'html.parser') # 定位所有活动链接的a标签——就是你提到的class为j_activity_item_link的元素 activity_tags = soup.find_all('a', class_='j_activity_item_link') # 提取链接并转为完整URL(因为原href是相对路径) base_site = "https://www.klook.com" full_activity_links = [] for tag in activity_tags: relative_href = tag.get('href') if relative_href: # 避免空链接的情况 full_link = f"{base_site}{relative_href}" full_activity_links.append(full_link) # 输出结果,你也可以改成写入文件之类的操作 print("成功抓取到的活动深度链接:") for num, link in enumerate(full_activity_links, start=1): print(f"{num}. {link}") except Exception as err: print(f"抓取时出问题啦:{err}")
代码说明
- 用
requests.get()拉取页面内容,raise_for_status()能帮你快速发现请求失败的问题(比如404、500错误) soup.find_all('a', class_='j_activity_item_link')精准定位到你要的活动链接标签,哪怕HTML里a标签重复写了class属性,BeautifulSoup也能正确识别- 原href是相对路径(比如
/activity/1031-arashiyama-rickshaw-tour-kyoto/),所以要拼接上网站的基础URL,才能得到可直接访问的完整链接 - 如果之后要抓多页的活动,只需要循环修改URL里的
p参数(比如?p=2、?p=3)就行
要是你还有具体的问题(比如动态加载内容抓不到、链接去重之类的),随时说!
内容的提问来源于stack exchange,提问作者Serious Ruffy
相关产品推荐
相关产品推荐

