之前用的一个多进程python爬虫

简介: 版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.
版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/77573959
#!C:\Python27\python.exe
#coding=utf8

import os
import urllib
import urllib2
from bs4 import BeautifulSoup
from multiprocessing import Pool

import socket
socket.setdefaulttimeout(60)


def url_open(url):
    user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'
    headers = {'User-Agent': user_agent}
    request = urllib2.Request(url=url, headers=headers)
    try:
        page = urllib2.urlopen(request, timeout=60)
    except urllib2.HTTPError as e:
        return 1
    contents = page.read()
    # print contents
    soup = BeautifulSoup(contents.decode('gb2312','ignore'), "lxml")
    return soup

def retrieve_img(dir, link):
    if url_open(link) != 1:
        soup = url_open(link)
        for line in soup.find_all("div", "ContentBox"):
            img_list = line.find_all('img')
            for img_item in img_list:
                raw_img = img_item.get('src')
                img_url = 'http:' + raw_img
                img_name = raw_img.split('/')[-1]
                print "Download: %s" % img_url
                # print img_name
                urllib.urlretrieve(img_url, dir + '\\' + img_name)

def crawler(root, url):
        # print url
        if url_open(url) != 1:
            soup = url_open(url)
            # print soup
            for line in soup.find_all("div", "box_con newslist"):
                li = line.find_all('li')
                for a in li:
                    href = a.find_all('a')
                    link = root + href[0].get('href')
                    text = href[0].get_text()
                    # print link
                    print "Creating directory %s..." % text
                    if not os.path.isdir(text):
                        try:
                            os.mkdir(text)
                            if os.path.isdir(text):
                                print "Directory %s successfully created!" % text
                                print "Crawling image page %s." % link
                                retrieve_img(text, link)
                        except IOError, e:
                            print e
                    elif os.path.isdir(text):
                        print "Directory %s already exists!" % text
                        print "Crawling image page %s." % link
                        retrieve_img(text, link)

                    # break #func test


def single_func(num):
    root = 'http://xxx.com'
    url = "http://xxx.com/articlelist/?20-" + str(num) + '.html'
    crawler(root, url)

if __name__ == '__main__':
    # single_func(1) #func test
    pool = Pool(processes=8)
    for i in range(1, 187):
        result = pool.apply_async(single_func, (i,))
    pool.close()
    pool.join()
    if result.successful():
        print 'Successful!'

目录
相关文章
|
2天前
|
数据采集 XML JavaScript
Python爬虫:从人民网提取视频链接的完整指南
Python爬虫:从人民网提取视频链接的完整指南
|
7天前
|
数据采集 Web App开发 API
B站高清视频爬取:Python爬虫技术详解
B站高清视频爬取:Python爬虫技术详解
|
8天前
|
数据采集 JSON API
深入解析:使用 Python 爬虫获取淘宝店铺所有商品接口
本文介绍如何使用Python结合淘宝开放平台API获取指定店铺所有商品数据。首先需注册淘宝开放平台账号、创建应用并获取API密钥,申请接口权限。接着,通过构建请求、生成签名、调用接口(如`taobao.items.search`和`taobao.item.get`)及处理响应,实现数据抓取。代码示例展示了分页处理和错误处理方法,并强调了调用频率限制、数据安全等注意事项。此技能对开发者和数据分析师极具价值。
|
8天前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
16天前
|
数据采集 Java 数据处理
Python实用技巧:轻松驾驭多线程与多进程,加速任务执行
在Python编程中,多线程和多进程是提升程序效率的关键工具。多线程适用于I/O密集型任务,如文件读写、网络请求;多进程则适合CPU密集型任务,如科学计算、图像处理。本文详细介绍这两种并发编程方式的基本用法及应用场景,并通过实例代码展示如何使用threading、multiprocessing模块及线程池、进程池来优化程序性能。结合实际案例,帮助读者掌握并发编程技巧,提高程序执行速度和资源利用率。
22 0
|
25天前
|
数据采集 存储 数据挖掘
深入剖析 Python 爬虫:淘宝商品详情数据抓取
深入剖析 Python 爬虫:淘宝商品详情数据抓取
|
1月前
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
2月前
|
数据采集 JSON 数据格式
Python爬虫:京东商品评论内容
京东商品评论接口为商家和消费者提供了重要工具。商家可分析评论优化产品,消费者则依赖评论做出购买决策。该接口通过HTTP请求获取评论内容、时间、点赞数等数据,支持分页和筛选好评、中评、差评。Python示例代码展示了如何调用接口并处理返回的JSON数据。应用场景包括产品优化、消费者决策辅助、市场竞争分析及舆情监测。
|
2月前
|
数据采集 供应链 API
Python爬虫与1688图片搜索API接口:深度解析与显著收益
在电子商务领域,数据是驱动业务决策的核心。阿里巴巴旗下的1688平台作为全球领先的B2B市场,提供了丰富的API接口,特别是图片搜索API(`item_search_img`),允许开发者通过上传图片搜索相似商品。本文介绍如何结合Python爬虫技术高效利用该接口,提升搜索效率和用户体验,助力企业实现自动化商品搜索、库存管理优化、竞品监控与定价策略调整等,显著提高运营效率和市场竞争力。
120 3
|
3月前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率

热门文章

最新文章