Python 如何使用BeautifulSoup从HTML中收集信息
我试图从HTML中提取信息,并通过从中获取信息来创建数据集。 我需要在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
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类型。在上面的代码中,我只是以《细菌致病机理》一书为例。您可能需要将其替换为要处理的书籍。