进程池与回调函数与正则表达式和re爬虫例子

Posted whylinux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程池与回调函数与正则表达式和re爬虫例子相关的知识,希望对你有一定的参考价值。

# 使用进程池的进程爬取网页内容,使用回调函数处理数据,用到了正则表达式和re模块

import re
from urllib.request import urlopen
from multiprocessing import Pool

def get_page(url,pattern):
    response=urlopen(url).read().decode(utf-8)
    return pattern,response   # 返回正则表达式编译结果 网页内容

def parse_page(info):
    pattern,page_content=info    # 接收到正则表达式编译结果,与网页内容
    res=re.findall(pattern,page_content)    # 调用re模块的方法,用正则匹配到网页的内容
    for item in res:
        dic={
            index:item[0].strip(),
            title:item[1].strip(),
            actor:item[2].strip(),
            time:item[3].strip(),
        }
        print(dic)
if __name__ == __main__:
    regex = r<dd>.*?<.*?class="board-index.*?>(d+)</i>.*?title="(.*?)".*?class="movie-item-info".*?<p class="star">(.*?)</p>.*?<p class="releasetime">(.*?)</p>
    pattern1=re.compile(regex,re.S)    # 将正则表达式编译后存到变量中
    url_dic={http://maoyan.com/board/7:pattern1}    # 一个url对应一个正则
    p=Pool()
    res_l=[]
    for url,pattern in url_dic.items():
        res=p.apply_async(get_page,args=(url,pattern),callback=parse_page)
        res_l.append(res)

    for i in res_l:
        i.get()

 

以上是关于进程池与回调函数与正则表达式和re爬虫例子的主要内容,如果未能解决你的问题,请参考以下文章

学习日记0910线程池与进程池 同步调用与异步调用 函数回调

进程池与回调函数

7.网络爬虫—正则表达式详讲

对着爬虫网页HTML学习Python正则表达式re

python爬虫-Re正则表达式介绍和实际应用

python爬虫-Re正则表达式介绍和实际应用