我试图在最终结果下刮掉ul表中的li公司。源代码看起来像这样
import string
import re
import urllib2
import datetime
import bs4
from bs4 import BeautifulSoup
class AJSpider(object):
def __init__(self):
print ("initisizing")
self.date = str(datetime.date.today())
self.cur_url = "https://youinvest.moneyam.com/modules/forward-diary/?date={date}&period=month"
self.datas = []
print ("initisization done")
def get_page(self,cur_date):
url = self.cur_url
try:
my_page = urllib2.urlopen(url.format(date = cur_date)).read().decode("utf-8")
my_soup = BeautifulSoup(my_page, "html.parser")
except:
print ('Failed')
return my_soup
def get_final(self, soup_page):
temp_data = []
final_result_section = soup_page.find("h3", text="Final Result")
print final_result_section
def start_spider(self):
my_page = self.get_page(self.date)
self.get_final(my_page)
def main():
my_spider = AJSpider()
my_spider.start_spider()
if __name__ == '__main__':
main()
我在stackoverflow中发现了类似的问题 Beautiful Soup: Accessing <li> elements from <ul> with no id,但这里有一个类ID,这使事情变得容易多了。
在我的场景中,我如何从ul表中提取li元素?这里唯一的标识符实际上是h3标签的内容,即最终结果,但它不是id,所以我不知道如何使用它。
答案 0 :(得分:3)
按文字查找h3
元素并获取following ul
list:
ul = soup.find("h3", text="Final Result").find_next_sibling("ul")
for li in ul.find_all("li"):
print(li.span.get_text(), li.a.get_text())
请注意,在最新版本的BeautifulSoup中,text
参数已重命名为string
,但由于向后兼容性,它们都有效。