現在Pythons BeautifulSoup Libraryを使って新聞記事のWebページをクロールしています。これらの記事は、オブジェクトの「詳細」に格納されます。Python:別の配列のテキストからの部分文字列を持つ配列の文字列の一致
次に、オブジェクト「行」に格納されているさまざまな通りの名前がいくつかあります。今私は記事に "行"に含まれている通りの名前を検索したいと思います。
ストリート名の1つが記事の一部である場合は、ストリートの名前を配列で安全にしたいと思います。
記事に一致するものがない場合(選択した記事にストリート名が含まれていない場合)、配列に空の要素が含まれているはずです。
たとえば、オブジェクト "行"が "Abbey Road"、 "St-John's Bridge"、 "West Lane"、 "Sunpoint"、 "East End"からなるとします。
オブジェクト「詳細」は、「Abbey Road」と「West Lane」を含む4つの記事で構成されます(たとえば、「Abbey Roadの自動車事故、3人が傷ついている」など)。他の2つの記事には「行」の名前は含まれていません。
が、結果はこのような配列である必要があり、一致した後: [] [「アビーロード」] [] [「ウェスト・レーン」]
私も私の元として、このためにベクトル化を使用するように言われましたデータサンプルはかなり大きいです。しかし、私は文字列演算にベクトル化を使用することに慣れていません。誰もこれですでに働いていますか?
マイコードは現在、次のようになりますが、このリターンだけ「-1」私の結果の配列の要素として:誰かが私の実験を再現したい場合
from bs4 import BeautifulSoup
import requests
import io
import re
import string
import numpy as np
my_list = []
for y in range (0, 2):
y *= 27
i = str(y)
my_list.append('http://www.presseportal.de/blaulicht/suche.htx?q=' + 'einbruch' + '&start=' + i)
for link in my_list:
# print (link)
r = requests.get(link)
r.encoding = 'utf-8'
soup = BeautifulSoup(r.content, 'html.parser')
with open('a4.txt', encoding='utf8') as f:
lines = f.readlines()
lines = [w.replace('\n', '') for w in lines]
details = soup.find_all(class_='news-bodycopy')
for class_element in details:
details = class_element.get_text()
sdetails = ''.join(details)
slines = ''.join(lines)
i = str.find(sdetails, slines[1 : 38506])
print(i)
、ウェブサイト、URLは上記のコードでありますオブジェクト「詳細」内の記事のクロールと格納が適切に機能するので、コードをコピーすることができます。
「ライン」のオブジェクトのための私の元のデータのための.txtファイルは、このDropboxのフォルダにアクセスすることができます。 https://www.dropbox.com/s/o0cjk1o2ej8nogq/a4.txt?dl=0
おかげで任意のヒントのために多くのことを私はベクトル化を経て、好ましくは、この作業を行うことができる方法。
私は変数 'soup'は、各イテレーションで上書きされます2番目のforループについてはかなりわからないと思います。とにかく、コード全体を実行して問題を理解しようとします! –
2番目のforループは、ニュースレポートが保存されているウェブサイトの異なるページをクロールするためのものです。リンクのリストを作成します。それぞれのリンクは1ページ分であり、最初のforループとページングのカウンタはURLの27です。 しかし、記事から「a4.txt」のリストと一致させてストリート名を抽出し、ストリート名が一致しない要素が空で、一致する名前を持つ要素が一致する要素を配列に格納するのは苦労しています名前のみ。 私のコード全体が上記のポストにあり、 "a4.txt"のリンクがあります。 @VivekHarikrishnan – DataFreshman