我试图实现一个多线程爬虫,它似乎正在同时获取一个列表或url而没有任何问题。 我测试了每一步,并让程序将所有html写入文本文件。 现在,程序的其余部分打算将每个html存储为字符串,并将其解析为该页面中的URL列表,然后将此列表写入数据库。 这是错误开始的地方: 首先,我已经锁定了解析过程,因为它首先导致错误,返回空列表,错误“属性评估失败” 现在我已经返回了列表但我无法将其写入数据库。
我的问题是,我是否需要锁定所有内容?为什么?我是否可以不允许所有线程同时解析并且每个线程都写入arraylist?这一切都会阻碍性能吗?
以下是我的一些代码示例; 首先调用go并解析一个url:
If Not String.IsNullOrEmpty(html) Then
'get all links first
links = parser.GetLinks(fromUrl, html)
然后写入数据库:
For Each link As String In links
recordsAffected = _
Links_DBObj.insert_feedurls_link(link, feedlink, execError, connObj_Generic, commObj_Generic)