【问题标题】:Retrieve entire HTML with urlopen(url)使用 urlopen(url) 检索整个 HTML
【发布时间】:2018-05-20 17:41:24
【问题描述】:

我注意到如果我使用

请求一个网址
urllib.request.urlopen([my_url]).read()

我得到这样的东西:

 <html>
<head>
</head>
<body>
    <span>...</span>
<body>
<script>
</script>


</html>

我想要的 beautifulsoup 的所有信息都在 &lt;span&gt;...&lt;/span&gt; 部分。如果我使用网络驱动程序,则包含该部分。但是 webdriver 似乎需要更长的时间,并且导致我的代码更加混乱。有没有办法在不使用 webdriver 的情况下检索整个 HTML 文档?

【问题讨论】:

    标签: python-3.x selenium beautifulsoup webdriver urllib


    【解决方案1】:

    这是一个更简单易读的解析&lt;span&gt;标签内容的解决方案:

    import bs4
    from bs4 import BeautifulSoup as soup
    from urllib.request import urlopen as uReq
    
    my_url = 'https://www.foo.com'
    
    uClient = uReq(my_url)
    page_html = uClient.read()
    uClient.close()
    
    page_soup = soup(page_html, "html.parser")
    span_content = page_soup.findAll("span",{"<attribute_name>":"<attribute_value>"})
    print(span_content.text)
    

    【讨论】:

    • 这仍然只给我 ...。如果我添加一个属性,我的 findAll 列表是 [ ]。 wedDriver 似乎是我能找到的收集 html 中所有内容的唯一方法。如果您想查看不同方法的示例,我已在此处添加脚本:github.com/mws75/UserName_by_Tag/blob/master/HashTag_SE_Test.py
    • 您好 DebanjanB,我很抱歉,直到现在我还没有时间对此进行测试,但是您的方法效果很好。它很快,并获得我需要的信息。我还没有弄清楚如何加载更多页面,所以这是我的下一步。但如果我能弄清楚,我的网络爬虫将比使用 Selenium 快得多。感谢您的帮助。
    【解决方案2】:

    你可以使用著名的请求库,看看下面的代码是否对你有帮助

    import requests
    from bs4 import BeautifulSoup
    
    page = requests.get('https://www.google.com/')
    soup = BeautifulSoup(page.text, 'lxml')
    
    span = soup.find_all('span')
    print(span)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2012-07-08
    相关资源
    最近更新 更多