美丽的汤和解析 reddit

beautiful soup and parsing reddit

刚刚尝试解析提交的 reddit shower 想法并 运行 遇到问题:

 path = 'https://www.reddit.com/r/Showerthoughts/'

 with requests.Session() as s:

    r = s.get(path)
    soup = BeautifulSoup(r.content, "lxml")

    # print(soup.prettify())

    threads = soup.find_all('p')


    for thread in threads:
        soup = thread
        text = soup('a')
        try:
            print(text[0])
        except:
            pass

在这段代码中,我试图获取每个提交的标题,该标题包含在

标记中,然后是带有 class "title may-blank" 的 标记。但是上面的代码 returns 所有带有 a 标签的元素都有很多,甚至认为标题在那里我将不得不再经历两次 soup.findAll() 的交互,而且我确信有一个 less手动搜索汤以打印所有标题的方法

据我所知,我尝试过

titles = soup.findAll( "a", {"class":"title may-blank}) for title in titles: print(title.string)
但这没有用 有什么想法吗? PS 我知道这可以通过 reddit API 完成并且效率更高,但我想提高我的解析技能,因为它们还没有达到标准。谢谢你的帮助

他们是css类,你还需要添加一个用户代理:

import requests
from bs4 import BeautifulSoup
path = 'https://www.reddit.com/r/Showerthoughts/'
headers ={"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36"}
with requests.Session() as s:
    r = s.get(path, headers=headers)
    soup = BeautifulSoup(r.content, "lxml")
    threads = soup.select('a.title.may-blank')
    for a in threads:
        print(a)

您也可以使用 soup.find_all("a", class_="title"),但匹配的数量可能比您想要的多。