目前,我正在使用Pythons BeautifulSoup Library來檢索報紙文章的網頁。這些文章存儲在對象「細節」中。Python:從陣列中匹配字符串與另一個陣列中文本的子字符串
然後我有幾個存儲在對象「行」中的各種街道名稱。現在我想搜索「行」中包含的街道名稱的文章。
如果其中一個街道名稱是其中一篇文章的一部分,我想在數組中保護街道名稱。
如果沒有匹配項目(所選文章不包含任何街道名稱),那麼數組中應該有一個空元素。例如,假設對象「線」由(「Abbey Road」,「St-John's Bridge」,「West Lane」,「Sunpoint」,「East End」)組成。
對象「細節」由4篇文章組成,其中2篇包含「Abbey Road」和「West Lane」(例如「Abbey Road車禍,三人受傷」)。其他兩篇文章不包含任何來自「行」的名稱。
那麼結果匹配應該是這樣的一個陣列中後: [] [「艾比路」] [] [「西一巷」]
我也被告知要使用矢量對於這一點,因爲我原來的數據樣本相當大。不過,我對字符串操作使用矢量化並不熟悉。有沒有人與此合作?
我的代碼目前看起來是這樣的,但是這僅返回「-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)
如果有人想複製我的實驗,網站,鏈接在上面的代碼並且對象「細節」中的文章的抓取和存儲工作正常,因此代碼可以被複制。
中的.txt文件對我原來的數據爲對象的「線」可以在這個Dropbox的,文件夾進行訪問: https://www.dropbox.com/s/o0cjk1o2ej8nogq/a4.txt?dl=0
非常感謝任何提示我怎樣才能使這項工作,最好是通過矢量。
我相當不確定的第二個for循環,其中變量'soup'將在每個迭代被覆蓋。無論如何,讓我嘗試運行你的整個代碼,並理解問題! –
第二個for循環用於抓取存儲新聞報告的網站的不同頁面。我們創建一個鏈接列表,每個鏈接爲一個頁面,第一個for循環,分頁計數器在URL中爲27。 但是,我很難從文章中提取街道名稱,方法是將它們與「a4.txt」中的列表進行匹配,並將它們存儲在數組中,其中沒有匹配街道名稱的元素爲空,並且具有匹配名稱的元素包含匹配只有名字。 我的整個代碼都在上面的文章中,並且有一個「a4.txt」的鏈接。 @VivekHarikrishnan – DataFreshman