Python实战计划学习笔记:爬取手机号

这次运用数据来存储,并从中提取数据

成果展示

部分成果1.png
部分成果2.png

代码

import requests
import time
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
PhoneNum = client['PhoneNum']
url_list = PhoneNum['url_list']
phone_info = PhoneNum['phone_info']]
# spider 1
def get_phone_link(pages):
    url = 'http://bj.58.com/shoujihao/pn{}/'.format(str(pages))
    wb_data = requests.get(url)
    time.sleep(1)
    soup = BeautifulSoup(wb_data.text, 'lxml')
    links = soup.select('li a.t')
    numbers = soup.select('strong')
    lk = soup.select('#infocont > span > b')
    if '0' not in lk:
        for number,link in zip(numbers,links):
            data = {
                'number': number.get_text(),
                'PhoneLink' : link.get('href').split('?')[0]
            }
            print(data)
            url_list.insert_one(data)
    else:
        pass
#  spider 2
def get_item_info(url):
    wb_data = requests.get(url)
    time.sleep(1)
    soup = BeautifulSoup(wb_data.text,'lxml')
    titles = soup.select('div.col_sub.mainTitle > h1')
    prices = soup.select('div.col_sub.sumary >ul > li > div.su_con > span')
    for title, price in zip(titles,prices):
        data = {
            'title' :( title.get_text()).replace("\n","").replace(" ",""),
            'price' : (price.get_text()).replace("\n","").replace(" ","")
        }
        print(data)
        phone_info.insert_one(data)

for page in range(1, 200):
    get_phone_link(page)

for info in url_list.find():
    url = info["url"]
    get_item_info(url)

总结

  • 遇到需要采集大量的数据,最好的方式就是将功能分离开来。一次只执行一个动作
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,005评论 25 709
  • 于是,我们回来的时候改乘圣马洛船,在再没遇见他。 冬天很快来临了,鹅毛大雪,一下就是好几天,房棱上结了好多个冰柱子...
    星星草的梦阅读 3,655评论 1 2
  • 文/阿关 老婆,你要照顾好你自己 因为,我想和你一起慢慢变老 直到有一天, 我不再能起来为你做早饭 最近我一直很担...
    捌天阅读 3,544评论 4 2
  • 最近刚接手swift3和OC混编的项目,项目比较乱,由于网络请求的工具类是上一个人基于AFN二次封装的,在swif...
    YannChee阅读 3,570评论 3 0
  • 万事皆有度,过度了必适得其反,虽周瑜打黄盖~自愿的!背后玄机自明。国家画院众人如此跪拜,有失做人之气节。 俗语云:...
    归一堂阅读 1,837评论 0 2

友情链接更多精彩内容