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

BeautifulSoupHTML を解析してタグを取得するために使用できます。コードの例を次に示します。

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 ページのデータ抽出については、 Beautifulsoup などの専用ライブラリを参照する必要があることに注意してください。そうすれば、プログラムは壊れにくくなり、保守しやすくなります。


string.find文字列が存在しない場合は-1を返します。

取得したページに「loginfield」という文字列はありません。


文字列の正しいインデックスを取得すると、返される値はその文字列の最初の文字の位置になります。

質問を編集してから:

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

つまり、文字列「loginfield」はテキストのオフセット 42136 から始まります。その位置から始まる 200 文字をそのように表示できます。

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

探しているさまざまな値を見つけるには、その位置に対してどこにあるのかを把握する必要があります。

于 2013-06-15T09:49:59.627 に答える