西刺网爬虫-python实践

作者: 极致简洁 | 来源:发表于2017-09-28 17:32 被阅读66次

    本次引入了多进程和异常捕捉的概念,python实现的并行程序有很多需要注意的地方,初学者如我也是研究了许久,才下得手。
    这次的代码只是简单的应用,并行爬虫的优势大家可以自行度娘谷哥。
    选取西刺网主要为后期建立代理池做个储备。
    BTW,多进程下异常捕捉也是个需要我们关注的点,要好好学习钻研!

    import requests
    from bs4 import BeautifulSoup
    from multiprocessing import Pool,freeze_support
    import traceback
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}
    xiciip=['http://www.xicidaili.com/nn/{page}',
            'http://www.xicidaili.com/nt/{page}',
            'http://www.xicidaili.com/wn/{page}',
            'http://www.xicidaili.com/wt/{page}']
    
    def getIPList(starturl):
        iplist = []
        try:
            for page in range(1,2):
                resp = requests.get(starturl.format(page=page),headers=headers)
                resp.raise_for_status()
                genIPitem(resp.text,iplist)
        except Exception as e:
            print('erro raised',e)
            traceback.print_exc()
        finally:
            pass
        print(iplist) 
    
    def genIPitem(html,iplist):
        bs = BeautifulSoup(html,'html.parser')
        for line in bs.find_all('tr')[1::]:
            item = {}
            details = line.find_all('td')[1:6]
            item['ip'] = details[0].string
            item['port'] = details[1].string
            item['location'] = details[2].a.string if details[2].a is not None else details[2].string.strip()
            item['protocol'] = details[-1].string
            item['stype'] = details[-2].string
            iplist.append(item)
    
    #单进程
    #for url in xiciip:
    #   getIPList(url)
    
    #以下为多进程代码
    
    if __name__ == '__main__':
        freeze_support() 
        pool = Pool()
        pool.map(getIPList,xiciip)
        pool.close()
        pool.join()
        print('bug completed')
    

    西刺网爬取很简单,没啥难度。不过官方有限制,一分钟内访问次数过多会被禁止IP,得等待1分钟之后才可以解禁,具体的爬取规范大家可以到官网上看看。

    相关文章

      网友评论

        本文标题:西刺网爬虫-python实践

        本文链接:https://www.haomeiwen.com/subject/wmkvextx.html