Webscraping Loop每次迭代都没有到达url

时间:2018-04-27 19:16:17

标签: python python-3.x web-scraping request python-requests

我正在编写一个多处理webscraper,它从网站中提取信息并记录下来。此代码的目的是在我的计算机上构建本地文件,镜像网页的内容,创建推文,帖子或文章的历史记录。我的目标是在循环中运行该程序,每分钟左右检查一系列网页以获取新信息。

如果我运行我的代码,我会获得我正在寻找的所有信息,我会保存它,并且对于我的所有原始目标,我的代码都有效。

然而,我遇到了一些我无法解释的事情。无论出于何种原因,当我运行我的代码时,它会在循环的第一次迭代中收集我要查找的信息的大多数,以及后续迭代的剩余信息。

我在第一个循环中缺少的数据从一个"第一次尝试"到了下一个,也就是说,即使我删除了所有文件并再次检查,我最终得到了 我正在寻找的数据,但是遗漏的部分完全来自不同的网站,而不是之前尝试的遗失的部分。

在我停止接收新数据之前,我花了多达7次循环迭代,最终完成了我的遗留帖子列表。

就好像我的程序只会访问我输入的部分网址,并且随机选择丢失的部分。这并不意味着我没有希望准确地为这些帖子添加时间戳。

我希望你们中的一个能告诉我我错过了什么让我的代码以这种方式行事。我喜欢每次迭代我的代码检查每个网站,并记录结果。

以下是我的代码示例,如果您发现我错过的内容,请告诉我。

def gensoup(url):
    headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36'}
    r = requests.get(url, headers=headers)
    soup = bs.BeautifulSoup(r.content, 'lxml')
    return soup

def webscraper(url):
    soup = gensoup(url)

    for t in soup.find_all('THINGS TO FIND'}):
            DoScraping()

            IsNewUrl=checkfiles('SCRAPED HREF')
            if IsNewUrl = True
                RecordNewUrl('SCRAPED HREF')

def RecordNewUrl('SCRAPED HREF'):
    with open(filename, 'a') as f:
        f.write(SCRAPED HREF+'\n')

def webhandler(urls):
    for url in urls
        webscraper(url):


def get_chunks(input_list): #thanks to quamrana
    return [input_list[i:i+chunk_size] for i in range(0, len(input_list), 5)]

def startscraper():
    chunks = get_chunks(all_urls)
    processes = [mp.Process(target=webhandler, args=(chunk,)) for chunk in chunks] # Create processes, each taking a chunk and the queue            
    for p in processes: # Start them all
        p.start()

0 个答案:

没有答案