Python和beautifulsoup Scrape Tex

2024-10-03 04:31:24 发布

您现在位置:Python中文网/ 问答频道 /正文

import requests
from bs4 import BeautifulSoup

url = 'https://www.brightscope.com/401k-rating/240370/Abengoa-Bioenergy-Company-Llc/244317/Abengoa-Bioenergy-Us-401K-Savings-Plan/'
thepage = requests.get(url)
urlsoup = BeautifulSoup(thepage.text, "html.parser")

plandata = urlsoup.find(class_="plans-section").text

print(plandata)

我试着只抓取等级号的类别,但是当我使用这个代码时,我什么也没有得到:(。在

  1. 我怎样才能刮出等级号的等级?在
  2. 我怎样才能抓取多个类(这是最重要的部分)并将它们放入一个可读的列表中?在

我的想法是循环每一个页面,并用一个新行将它们附加到一个.csv文件中。在

示例如下:

^{pr2}$

我就是无法克服这个难关。谢谢你的帮助!在

Edit—类“plans section”保存我想要的数据,但它似乎被分解成两个div标记。我要在“平均值”上刮取数据。问题是,每一页似乎只有相同的“数据文本”,以及每一节/每一页上的更改之后的内容。我有什么选择?在


Tags: 数据textfromimporturlsectionrequestsplans
2条回答

你到底想从书页里找出什么?如果您希望按类获取div,这应该会有所帮助。在

urlsoup.findAll("div", { "class" :"rating-number"})
import requests
from bs4 import BeautifulSoup


url = 'https://www.brightscope.com/401k-rating/141759/Aj-Kirkwood-Associates-Inc/143902/Aj-Kirkwood-Associates-Inc-401K-Profit-Sharing-Plan/'
thepage = requests.get(url)
urlsoup = BeautifulSoup(thepage.text, "html.parser")

rate = urlsoup.find(class_='rating-number').text
name = urlsoup.find(class_="name").text
print(rate, name)

输出:

^{pr2}$

使用re筛选器匹配包含特定文本的所有类:

If you pass in a regular expression object, Beautiful Soup will filter against that regular expression using its search() method.

在您的情况下:

import re
soup.find_all(class_=re.compile(r'data-text.+'))

相关问题 更多 >