python3 [爬虫入门实战] 爬虫之爬取盘多多文档(百万数据)

有一次在简书上不小心看到这个爬虫上百万的数据,确实是上百万啊。我真的日了仙人板板了。

可以看一下网站:http://www.panduoduo.net/c/4/16
确实是挺多的数据。

先上要爬取的内容,虽然比较少,准备的有些少了:

这里写图片描述

爬取的内容结果
这里写图片描述

爬取下来的确实很简陋,突然发现自己针对各种各样的tag,属性用的还是不熟悉,这次用的beautifulsoup,还是用的不熟悉,再加上该网站一些标签,内容不定,故没有敢轻易再继续爬取了。这次用的是多进程进行的爬取,爬取的速度依然还是慢,我从快五点

左右出去的,现在还在爬着,确实也难为了,不过这也是我第一次进行百万数据的爬取,虽然不知道里面的内容是不是重复的太多,但爬取了这么久,还是没有报错。可见现在遇到的问题都是小问题,以后肯定会出现大的问题的,

突然发现,一些常用的三方库,还是要多练习比较好。不能是只用了一次就能完全掌握了的。

贴上源代码,让之前的不可能爬取的成为可能!

# encoding=utf8

import requests
import re
from bs4 import BeautifulSoup
from multiprocessing import Pool
url = 'http://www.panduoduo.net/c/4/1'
headers = {
    'Cookie': 'Hm_lvt_11b39dcf34d304adbc3f3f49e67cb940=1483436227; CNZZDATA5767138=cnzz_eid%3D1508734121-1483434808-%26ntime%3D1483434808; sh=%E7%94%B5%E5%BD%B1+++python3%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B+++python3%20%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2+++python3+++%E6%B8%B8%E6%88%8F'
    ,
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2372.400 QQBrowser/9.5.10548.400'
}


def getHtml(url):
    req = requests.get(url, headers=headers)
    return req.text


def parse_panduoduo(url):
    soup = BeautifulSoup(url, 'lxml')
    url_name = soup.select("table.list-resource > tr")
    a_url = soup.findAll('a', {'class': 'blue'})

    # for name in url_name:
        # print('url_name   ' + name.get_text())

    # for url in a_url:
    #     print("ulll " + url.get_text())
    # 标题
    titles = soup.findAll('a', {'class': 'blue'})
    for title in titles:
        print(title.string)

    # 获取链接(这里还包含其他链接 主要是获取:/r下的链接)
    data = soup.findAll('a', attrs={'href': True})
    for da1 in data:
        print('data ' + str(da1.get('href')))
        print('title ' + str(da1.get('title')))

    # 大小
    sizes = soup.findAll('td', {'class': 't2'})
    for size in sizes:
        print('size ' + str(size.string))
        # 该用户的分享

# data = getHtml(url)
# parse_panduoduo(data)

def getData(page):
    url = 'http://www.panduoduo.net/c/4/{0}'.format(page)
    print("第{0}页Url ".format(page)+url)
    print("第{0}页".format(page))
    data = getHtml(url)
    parse_panduoduo(data)

if __name__ == '__main__':
    pool = Pool(processes=10)
    pool.map_async(getData, range(1, 86151))
    pool.close()
    pool.join()

感觉随着入门逐渐的深入,自己的动力没有那么足,多次练习完后都是用的差不多一样的操做

下次文章规定了:搭建mongoDB,使用新框架,再把基础巩固一遍

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值