Python爬虫如何获取分类链接?新手爬取小说网站遇阻求助
嘿,我来帮你捋捋这个爬虫的问题哈~
问题出在哪?
你现在的代码里用soup.findAll(class_="search-by-genre")拿到的是分类的容器元素,而不是直接的链接标签。直接打印link只会输出整个标签对象,就算你尝试link.get("href")也大概率返回None——因为search-by-genre类对应的不是<a>标签本身,而是包裹着分类链接的父元素呀。
修正后的代码
我给你调整了代码,既能正确拿到分类链接,还处理了相对路径的问题:
from requests import get from bs4 import BeautifulSoup site = "https://readlightnovel.org/" # 获取HTML页面,补全User-Agent避免被拦截 r = get(site, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"}) html_content = r.content # 解析HTML soup = BeautifulSoup(html_content, "lxml") # 先找到所有分类容器 category_containers = soup.findAll(class_="search-by-genre") for container in category_containers: # 从容器里提取所有<a>标签(也就是分类链接) genre_links = container.find_all("a") for link in genre_links: href = link.get("href") # 把相对路径转成完整URL full_link = site + href if href.startswith("/") else href print(f"分类链接:{full_link}") # 到这里就可以写逻辑进入每个分类爬文章啦 # 比如可以写个函数,传入full_link去解析文章列表
几个关键提示
- 一定要从容器里找
<a>标签:search-by-genre是分类组的容器,里面才藏着真正的链接标签。 - 处理相对路径:网站里的链接很多是
/genre/xxx这种相对路径,必须拼接成完整URL才能正常请求。 - 补全User-Agent:有些网站会检查这个字段,补全后能降低被反爬拦截的概率。
内容的提问来源于stack exchange,提问作者Faheem Akhtar
相关产品推荐
相关产品推荐

