如何在字符串中查找子字符串 - 通过指定字符串的开头和结尾?

时间:2015-11-21 14:03:44

标签: python string python-3.x substring

我想从网站上获取一些数据。

我的程序目前使用urllib.request来读取整个html文档。 由于网站更改,每次运行程序时HTML文件的数据都不同。

一些数据保持不变 - <的开始和结束点。脚本>。

我想告诉python子串的开始和结束应该是什么。

我用谷歌搜索了这个,但是只找到了一种方法,要求你提前知道子串来寻找它 - 例如:

str1.find(str2)

以下是我的计划的片段:

import urllib.request

def get_html():
with urllib.request.urlopen("http://website.com/dynamic_page") as response:
    html = response.read()
    return html

print(get_html())

这会打印一个长字符串,但我只需要获取它的一部分,否则我的其他函数会在整个文档中查找字符串而不只是一小部分:

def search_custom(string):

    html = get_html()
    string_var = string
    string_var = string_var.encode('utf-8')

    string_count = html.count(string_var)
    print(string_count)

    return string_count

2 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

start = str1.find("<script>")
if start > -1:
    end = str1[start:].find("</script>")
    if end > -1:
        data = str1[start + 8:start + end]

答案 1 :(得分:1)

您的页面数据发生了变化,但结构将会相同。为什么不使用BeautifulSoup并刮掉特定的div / script标签?

一个例子

from bs4 import BeautifulSoup

soup = BeautifulSoup(page)
message = soup.find("script")

这将为您提供第一个脚本标记。您可能不需要第一个标签。还有很多其他方法可以刮掉。您可以查看docs