Python 如何使用BeautifulSoup从HTML中收集信息

Python 如何使用BeautifulSoup从HTML中收集信息,python,web-scraping,beautifulsoup,data-science,Python,Web Scraping,Beautifulsoup,Data Science,我试图从HTML中提取信息,并通过从中获取信息来创建数据集。 我需要在html中的“项目”中获取信息,如标题、副标题、作者、描述等 import tempfile import urllib.request pd.set_option('display.max_colwidth', 500) import time import requests import random from urllib.parse import quote from bs4 import BeautifulSoup

我试图从HTML中提取信息,并通过从中获取信息来创建数据集。 我需要在html中的“项目”中获取信息,如标题、副标题、作者、描述等

import tempfile
import urllib.request
pd.set_option('display.max_colwidth', 500)
import time
import requests
import random
from urllib.parse import quote 
from bs4 import BeautifulSoup as bs

book_info = []
error_list = []
not_found = []
for title in unique_title[1:5]:
    try:
        page = requests.get("https://www.googleapis.com/books/v1/volumes?q="+quote(title))
        soup = bs(page.content,'lxml')
        if "items" in soup:
            volume_info = data["items"][0] 
            authors = volume_info["volumeInfo"]["authors"] if "authors" in volume_info["volumeInfo"] else  np.nan
            category = volume_info["volumeInfo"]["categories"] if "categories" in volume_info["volumeInfo"] else  np.nan
            pages = volume_info["volumeInfo"]["pageCount"] if "pageCount" in volume_info["volumeInfo"] else  np.nan
            publication_date = volume_info["volumeInfo"]["publishedDate"] if "publishedDate" in volume_info["volumeInfo"] else np.nan
                
            book_info.append({"google_id": volume_info['id'],
            "title": volume_info["volumeInfo"]["title"],
            "author": authors, 
            "publication_date": publication_date,
            "category": category,
            "pages": pages})
        else: 
            not_found.append(title)
    except Exception as e:
        error_list.append(e)
    time.sleep(np.random.random())


我不熟悉如何访问soup中的信息。请提供帮助。

的内容是json字符串,因此您可以使用将其转换为dict

获取dict后,您可以循环查看
项的值
,并从中获取所需信息,如下所示:

[“细菌致病机理”中标题的
:
尝试:
页面=请求。获取(“https://www.googleapis.com/books/v1/volumes?q=“+引述(标题))
soup=bs(页面内容,'lxml')
jsonData=json.load(soup.find('p').get_text())
对于jsonData['items']中的项目:
卷信息=项目['volumeInfo']
authors=volume\u info.get('authors',np.nan)

当我执行上述代码时,虽然它循环了超过必要的次数并多次存储相同的信息。@Raven我不知道你在经历什么。因为这取决于如何从
jsonData
获取项目。您可以
打印(type(jsonData))
以确保它是dict类型。在上面的代码中,我只是以《细菌致病机理》一书为例。您可能需要将其替换为要处理的书籍。