python-3.x - 使用 Beautifulsoup 在 Python 中提取数据
问题描述
我正在尝试从https://ash.confex.com/ash/2019/webprogram/start.htmfind_all
中提取数据并收到beautifulsoup错误
import webbrowser
import os
import requests
from bs4 import BeautifulSoup
import sys
import wget
import pandas as pd
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome('D:\\crome drive\\chromedriver.exe')
driver.get('https://ash.confex.com/ash/2019/webprogram/start.html')
searchterm = driver.find_element_by_id("words").send_keys("CAR-T")
driver.find_element_by_name("submit").click()
#driver.find_element_by_tag_name("resulttitle")
#driver.find_element_by_class_name("a")
soup_level1=BeautifulSoup(driver.page_source, 'lxml')
#fl=soup_level1.find_all(class_='soup_level1')
results = soup_level1.find_all('div', attrs={'class':'resulttitle'})
tag = results.findall('a', attrs='href')
我收到错误
AttributeError:ResultSet 对象没有属性“findall”。您可能将项目列表视为单个项目。当您打算调用 find() 时,您是否调用了 find_all()?
解决方案
是的,正如错误所说的那样 - 该find_all
方法应该在 html 树上使用,但在您的代码中,变量results
是 ResultSet 对象。在 bs4 中,这是一个列表,其中每个项目都是一个 HTML 树。
results = soup_level1.find_all('div', attrs={'class':'resulttitle'})
print(type(results)) # <class 'bs4.element.ResultSet'>
print(results) # []
这也表明你results
是空的。我搜索了 HTML 并没有看到任何带有 class = "resulttitle" 的 div,因此您可能需要仔细检查您要查找的内容。
理论上,如果您的results
变量不为空,您可以遍历其中的每个项目,results
然后找到您要查找的所有链接:
results = soup_level1.find_all('div', attrs={'class':'resulttitle'})
for result in results:
tag_list = result.find_all('a', attrs='href)
# this will yield another list where each item is an HTML tree
推荐阅读
- vba - 如果 Dlookup 在多个表中不符合条件,则显示错误。微软访问
- r - [r] raster 包中的镶嵌()中的“缺少乐趣”错误是什么意思?
- excel - 如何在表中找到与条件匹配的第一列
- ionic2 - TypeError:无法读取 Ionic CLI 2.2.1 + Gulp 4 上未定义的属性“服务:之前”
- node.js - Mongoose 将返回的数据限制为模型
- postgresql - 为什么 pg_search trigram 返回这些意外结果?
- c# - 托管在 Azure Web 应用程序上的 API 返回 JSON 数组,但没有 Name .Net core 3.1
- wordpress - post_meta get_the_ID 在 wordpress 中不起作用
- mysql - 使用 forEach() 和 Node.js 插入数据
- python - 如何在一个范围内除以一个列表?