2

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

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

import requests

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

>>> 42136

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

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

<title>Some title here</title>

或者这个:

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

有人知道我应该如何解决这个问题吗?

4

2 回答 2

3

您可以使用它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

但取决于它是否是第一个标题

于 2013-06-15T09:59:35.653 回答
0

请注意,对于 HTML 页面数据提取,您应该查看一个专门的库,例如Beautiful soup。这样,您的程序将不那么脆弱并且更易于维护。


string.find如果字符串不存在,将返回-1 。

您检索的页面中没有字符串“loginfield”。


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

因为你编辑了你的问题:

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

这意味着,字符串“loginfield”从文本中的偏移量 42136 开始。您可以以这种方式显示从该位置开始的 200 个字符:

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

要找到您要查找的各种值,您必须弄清楚相对于该位置的位置。

于 2013-06-15T09:49:59.627 回答