如何找到唯一的HTML元素?

时间:2018-12-17 15:15:02

标签: python python-3.x

我正在查看带有一堆名为“ tspan”的标签的URL。这可能是隐藏的,还是以某种方式不暴露?

如何获取“提取物”以及“ source_load”和所有其他tspan元素,将所有内容加载到列表中,并将列表转储到桌面上的文件中?这是我正在测试的代码。

from bs4 import BeautifulSoup as bs
import webbrowser
import requests


REQUEST_URL = 'https://corp-intranet.com/admin/'
response = requests.get(REQUEST_URL, auth=('em_email', 'pswd'))
xml_data = response.text.encode('utf-8', 'ignore')


url_list = ['https://corp-intranet.com/admin/ad_history']

for link in url_list:
    File = webbrowser.open(link)
    File = requests.get(link)
    data = File.text
    soup = bs(data, "lxml") 
    all_text = []
    for link in soup.findAll('tspan'):
        all_text.append(link.get('tspan'))
        print(all_text)

with open('C:/Users/ryans/OneDrive/Desktop/test.txt', 'wb') as outfile:
    for f in all_text:
        with open(f, '\n') as infile:
            outfile.write(f.encode('utf-8'))
            outfile.write(infile.read())

2 个答案:

答案 0 :(得分:0)

嗯..我认为您的基本方法也是..基本

基本假设

尽管您正在从远程服务器下载html文件,但是基本操作仍然依赖于文本操作。毫无疑问-您可以自己完成。另一方面-为什么呢?我的基本假设是,您可以使用第三方库来减轻工作量

使用Html Scrapper

由于HTML的使用非常广泛,因此几乎每种平台/编程语言都至少具有一个好的库,可以帮助您处理HTML内容(最有可能在使用XPath时)。 例如: C#程序员可能会为此目的使用Agility-Pack

建议的解决方案

使用lxml-完全可以满足您的需求。 Here是一篇很棒的文章,解释并演示了如何开始使用它。简而言之:

from lxml import html
import requests
page = requests.get('http://econpy.pythonanywhere.com/ex/001.html')
tree = html.fromstring(page.content)
buyers = tree.xpath('//div[@title="buyer-name"]/text()')

这应该满足您的要求

答案 1 :(得分:0)

您需要使用get_text()方法来获取标签的文本。 tag.get(...)用于获取标签内的内容。尝试all_text.append(link.get_text())

此外,如果您需要的内容是动态加载的,并且没有出现在原始页面源中,那么您将不会在请求中看到它。您可以使用硒来克服这一问题(quick start guide here)。