為了將comments下的所有用戶評論選出來

每一個<li>標簽代表一個用戶的評論,就直接用find_all('li')了

但發現這里有21項,但數了數發現只有20個用戶,原來啊是這里出問題了:

這個li標簽是用戶評論下的一張圖片。
但我們不想選到這個,觀察一下,用戶的li含有“data-id”和“id”屬性,而圖片沒有,如下圖:

於是就去百度找了一下“beautifulsoup find_all怎樣把帶有某種屬性的標簽選出而不含該屬性的標簽不選”但沒找到結果,
先是試了試在find_all加入屬性,想匹配出含有"data-id"屬性的“li”標簽,但試了幾個都出問題,就感覺這個方法行不通。

最后通過翻閱beautifulsoup官方文檔,發現一個find_all傳方法:

於是自己也寫了一個方法,正好把所有符合條件的都選了出來了
1 soup = BeautifulSoup(open(comment_file,encoding='utf-8'),'lxml') 2 comments = soup.select('div.comment-list')[0] 3 comments = comments.find_all(lambda tag:tag.has_attr('data-id') and tag.has_attr('id'))
如下

后來又閱讀了一下官方文檔,

發現這些用戶的li都含有id屬性,且“id”均含“rev_”開頭,所以試了下正則表達式:

也正確的把他們都選出來了!
時隔半年再來寫這個小爬蟲,還是挺吃力啊!所以還是學了之后要多用,多鞏固,才能迎刃而解!
