Python 3 - 从HTTPrequest响应中获取一些字符串

时间:2013-06-15 09:38:35

标签: python string python-3.x httprequest text-parsing

我很难从httprequest响应中提取数据。

有人能帮助我吗?这是我的代码的一部分:

import requests

r = requests.get('https://www.example.com', verify=True)
keyword = r.text.find('loginfield')
print (keyword)

>>> 42136

42136 值基本上意味着response.text上存在字符串' loginfield '。但是如何从中提取特定的字符串呢?

例如,我想提取这些确切的字符串:

<title>Some title here</title>

或者这个:

<div id='bla...' #continues extracting of strings until it stops where I want it to stop extracting.

有人知道我该如何处理这个问题?

2 个答案:

答案 0 :(得分:2)

您可以使用BeautifulSoup来解析HTML并获取标记。这是一段代码示例:

import requests
from bs4 import BeautifulSoup as BS
r = requests.get('https://www.example.com', verify=True)
soup = BS(r.text)
print(soup.find('title').text)

应打印:

Some title here

但取决于它是否是第一个冠军

答案 1 :(得分:0)

请注意,对于HTML页面数据提取,您应该看一下像Beautiful soup这样的专业库。你的程序将不那么脆弱,而且更容易维护。


如果字符串,则

string.find将返回 -1

没有字符串&#34; loginfield&#34;在您检索的页面中。


一旦你有了正确的字符串索引,返回的值就是该字符串的第一个字符的位置。

因为你编辑了你的问题:

>>> r.text.find('loginfield') 
42136

这意味着,字符串&#34; loginfield&#34;从文本中的偏移42136开始。您可以通过以下方式显示200个字符:

>>> print(r.text[42136:42136+200])

要查找您要查找的各种值,您必须确定相对于该位置的位置。