我正在查看带有一堆名为“ 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())
答案 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)。