【发布时间】:2020-09-27 17:00:36
【问题描述】:
我写了一个简单的脚本,虽然它在抓取网站时有效,但在尝试使其不抓取重复项时,它不起作用。我认为使它不刮重复的逻辑是:
- 将所有链接添加到列表中
- 获取新链接并与第一个列表进行比较
- 如果第二个列表中的新链接不在第一个列表中,则修改到第一个列表?
import requests
import time
from bs4 import BeautifulSoup
import sys
f = open("links.txt", "a")
list_=[]
while True:
try:
URL = f'WEBSITEURL.COM'
page = requests.get(URL)
time.sleep(1)
soup = BeautifulSoup(page.text, 'html.parser')
data = soup.findAll('div',attrs={'class':'card-content'})
for div in data:
links = div.findAll('a')
for a in links:
if a not in list_:
f.write(a['href'])
f.write('\n')
print (a['href'])
elif:
continue
except Exception as e:
print('something went wrong')
#continue
【问题讨论】:
-
你能详细说明“它不起作用”吗?
-
这就是问题所在。它只是触发了我的 print('something went wrong') 错误,但是从理论上看它应该可以工作的代码?我用制作时的逻辑更新了我的帖子
-
引发或打印捕获的异常,这样您就可以真正看到导致它崩溃的原因。
-
尝试打印异常信息,看看有什么问题:
print('something went wrong', str(e)) -
注意:您永远不会添加到您的列表中,如果您想防止重复,请使用集合
标签: python web web-scraping