目前,我正在使用Pythons BeautifulSoup图书馆为报纸文章爬行网页。这些物品存储在对象“details”中。
然后,我有几个不同街道的名称存储在对象“lines”中。现在我想在文章中搜索“lines”中包含的街道名称。
如果其中一条街道的名称是其中一篇文章的一部分,我想将街道的名称保存在一个数组中。
如果某个项目不匹配(所选项目不包含任何街道名称),则数组中应该有一个空元素。
例如,假设对象“线”由(“Abbey Road”、“St John’s Bridge”、“West Lane”、“Sunpoint”、“East End”)组成。
对象“细节”包括4条,其中2条包含“Abbey Road”和“West Lane”(例如,“Abbey Road上的车祸,三人受伤”)。其他2篇文章不包含任何来自“行”的名称。
然后,匹配后的结果应为如下数组:
[][“Abbey Road”][[“West Lane”]
我还被告知要使用矢量化,因为我的原始数据样本相当大。但是,我不熟悉如何将矢量化用于字符串操作。有人用过这个吗?
我的代码当前如下所示,但这只返回“-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:
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就在上面的代码中,并且在对象“details”中爬行和存储文章的工作正常,因此可以复制代码。
这个可以在此Dropbox文件夹中访问对象“lines”的原始数据的txt文件:
https://www.dropbox.com/s/o0cjk1o2ej8nogq/a4.txt?dl=0
非常感谢您给我的任何提示,我可以如何做到这一点,最好是通过矢量化。