gpt4 book ai didi

python - 从 URL 中查找字符串中的所有匹配词

转载 作者:太空宇宙 更新时间:2023-11-04 06:09:23 24 4
gpt4 key购买 nike

我正在尝试编写我的第一个 python 脚本。我想编写一个程序,从网站获取信息。

我设法打开网站,读取所有数据并将数据从字节转换为字符串。

import urllib.request

response = urllib.request.urlopen('http://www.imdb.com/title/tt0413573/episodes?season=10')
website = response.read()
response.close()

html = website.decode("utf-8")

print(type(html))
print(html)

字符串很大,我不知道我是将其转换为列表并遍历列表还是将其作为字符串保留。

如果找到所有关键字 airdate 并且他们得到字符串中的下一行,我想做什么。

当我滚动浏览字符串时,这是相关位:

<meta itemprop="episodeNumber" content="10"/>
<div class="airdate">
Nov. 21, 2013
</div>

这在字符串中发生了很多次。我要做的是遍历字符串并返回此结果:

"episodeNumber" = some number
"airdate" = what ever date

对于超时,这发生在字符串中。我试过:

keywords = ["airdate","episodeNumber"]
for i in keywords:
if i in html:
print (something)

我希望我以正确的方式解释自己。如果需要,我会编辑问题。

最佳答案

在处理像 HTML/XML 这样的结构化文本时,最好使用利用这种结构的现有工具。这不是使用正则表达式或手动搜索,而是提供了一个更可靠和可读性更高的解决方案。在这种情况下,我建议安装 lxml解析 HTML。

将此原则应用于您的问题,尝试以下操作(我假设您使用 Python 3,因为您导入了 urllib.request):

import lxml.html as html
import urllib.request

resp = urllib.request.urlopen('http://www.imdb.com/title/tt0413573/episodes?season=10')

fragment = html.fromstring(resp.read())

for info in fragment.find_class('info'):
print('"episodeNumber" = ', info.find('meta').attrib['content'])
print('"airdate" =', info.find_class('airdate')[0].text_content().strip())

为了确保剧集编号和播出日期是对应的,我搜索了周围的元素(类为“info”的 div),然后提取了您想要的数据。

我确信可以通过更精美的元素选择使代码更漂亮,但这应该让您入门。


[添加了有关 HTML 结构的解决方案的更多信息。]

包含一集数据的字符串如下所示:

<div class="info" itemprop="episodes" itemscope itemtype="...">
<meta itemprop="episodeNumber" content="1"/>
<div class="airdate">Sep. 26, 2013</div> <!-- already stripped whitespace -->
<strong>
<a href="/title/tt2911802/" title="Seal Our Fate" itemprop="name">...</a>
</strong>
<div class="item_description" itemprop="description">...</div>
<div class="popoverContainer"></div>
<div class="popoverContainer"></div>
</div>

您首先通过类别“信息”选择包含一集所有数据的 div。您需要的第一个信息是 div.info 元素的子元素,meta 元素,存储在其属性“content”中。

接下来,您需要将信息存储在 div.airdate 元素中,这次它以文本形式存储在元素中。为了去除它周围的空白,我使用了 strip() 方法。

关于python - 从 URL 中查找字符串中的所有匹配词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19736625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com