2017-07-14 56 views
0

我編寫抓取數據的python程序,某些項目的類是「_3pw9 _2pi4 _2ge8」,有些項目的類是「_3pw9 _2pi4 _2ge8 _3ms8」,我想抓取數據類名爲包含「_3pw9 _2pi4 _2ge8」,以及包括數據,它的類名是「_3pw9 _2pi4 _2ge8 _3ms8」,我寫:python抓取數據類名包含一些類名

soup_user_gender_page = BeautifulSoup(html_user_gender_page,"html.parser") 
     soup_user_about_main_frame = soup_user_gender_page.find("div", 
id="pagelet_timeline_medley_about") 
     if soup_user_about_main_frame: 
      soup_user_basic_main_frame = 
soup_user_about_main_frame.find("div",id="pagelet_basic") 
      if soup_user_basic_main_frame: 
       soup_user_about_li_block = 
soup_user_basic_main_frame.find_all("li",class_= "_3pw9 _2pi4 _2ge8") 

然而,唯一的類名是「_3pw9 _2pi4 _2ge8」正在爬網項目,類名稱爲「_3pw9 _2pi4 _2ge8 _3ms8」的項目尚未被抓取

請問能否告訴我原因以及如何編寫程序

+0

可能重複的[美麗的湯,如果類「包含」或正則表達式?](https://stackoverflow.com/questions/34660417/beautiful-soup-if-class-contains-or-regex) –

回答

0

我知道你的問題在於你需要抓取所有類名稱包含「_3pw9 _2pi4 _2ge8」的項目。

如果是真的,你應該考慮改變你的最後一行

soup_user_basic_main_frame.find_all("li",class*= "_3pw9 _2pi4 _2ge8") 

注意,我改變了下劃線class後一個星號,這是官方語法「名稱包含」

+0

我使用蘋果筆記本電腦,按照你所說的在課後打印shift +「*」,但是在pycharm IDE中,它出錯了,是什麼原因以及如何解決它 – bin

+0

不確定。嘗試以下操作:soup.findAll(True,{「class」:re.compile(「^ _ 3pw9 _2pi4 _2ge8」)}) – rlinden