如何抓取页面中3个同class的div元素内容?
如何抓取页面中3个同class的div元素内容?
别担心,刚接触网页抓取遇到这种情况太正常啦!
你之前用的soup.find("div", class_="section").text.strip()只能匹配到页面中第一个符合条件的div元素,这就是为什么拿不到第二个和第三个内容的原因。
要抓取所有同class的div,你需要用BeautifulSoup的find_all()方法,它会返回所有匹配条件的元素组成的列表,接下来就可以逐个提取文本了:
方法一:循环遍历所有元素
# 获取所有class为section的div元素 all_sections = soup.find_all("div", class_="section") # 逐个提取文本 for section in all_sections: content = section.text.strip() print(content) # 这里可以根据需求把内容存起来或者做其他处理
方法二:直接通过索引获取指定元素
如果你明确知道要第2个或第3个元素,也可以直接通过列表索引访问(注意Python的索引是从0开始的):
# 获取第二个div的内容 second_section_text = soup.find_all("div", class_="section")[1].text.strip() # 获取第三个div的内容 third_section_text = soup.find_all("div", class_="section")[2].text.strip()
方法三:用列表推导式一次性拿到所有文本
如果想直接得到所有内容的列表,可以用更简洁的写法:
section_texts = [sec.text.strip() for sec in soup.find_all("div", class_="section")] # 现在section_texts就是包含三个div文本的列表,顺序和页面中的一致
这样就能轻松拿到三个div里的内容啦,刚开始学web scraping难免踩点小坑,多试几次就熟练啦~
备注:内容来源于stack exchange,提问作者Tamir Gansukh
相关产品推荐
相关产品推荐

