我想从网站上获取一些数据。
我的程序目前使用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
答案 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。