代码之家  ›  专栏  ›  技术社区  ›  Jorge Galán

使用BeautifulSoup分析错误

  •  0
  • Jorge Galán  · 技术社区  · 6 年前

    我想访问此网站的标题: https://zenodo.org/search?page=1&size=20&q=broma 实际上,我使用BeautifulSoup,但当我使用此代码访问时,结果为空([]):

    from urllib.request import urlopen as uReq
    from bs4 import BeautifulSoup as soup
    
    def generateSoup(my_url):
        uClient = uReq(my_url)
        page_html = uClient.read()   
        uClient.close()
        return soup(page_html,"lxml")
    
    page_soup = generateSoup('https://zenodo.org/search?page=1&size=20&q=broma')
    containers = page_soup.findAll('a',{'class':'ng-binding'})
    print(containers)
    

    如果您能更正我的代码或给我另一个可以使用的库,我将非常感谢您的帮助。

    谢谢大家。

    编辑:问题是HTML网站没有此元素: Element

    1 回复  |  直到 6 年前
        1
  •  2
  •   William Feirie    6 年前

    本网站使用AJAX显示结果,您可以找到AJAX请求以获得JSON结果。

    from urllib.request import urlopen as uReq
    from bs4 import BeautifulSoup as soup
    import json
    
    def generateJson(my_url):
        uClient = uReq(my_url)
        page_html = uClient.read()
        uClient.close()
        return json.loads(page_html.decode("utf-8"))
    
    page_json = generateJson('https://zenodo.org/api/records/?page=1&size=20&q=broma')
    print(page_json["hits"]["hits"][0]["metadata"]["title"])