python爬虫(BeautifulSoup)

本篇文章将爬取零度编程的列表 传送门

我们只爬取如下的列表
这里写图片描述
废话不多说 上代码 很菜 大神勿喷

# -*- coding: utf-8 -*-  
# Auth Ethan
# 爬取零度编程网站的数据

import  requests
from  bs4 import  BeautifulSoup
from multiprocessing.dummy import Pool as ThreadPool


url="https://www.xcode.me/page/"
img=[]
data=[]
urls=[]
def page_one(u):
    #伪装成浏览器 否则无法访问
   ha={
          'Accept': 'text / html, application / xhtml + xml, application / xml; q = 0.9, image / webp, image / apng, * / *;q = 0.8',
          'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36',
          'Content-Type':'text/html; charset=utf-8'

   }
   res=requests.get(u)
   result=BeautifulSoup(res.text,"lxml")
   for item in result.select("article.excerpt"):
       #获取图片链接
       try:
           src = item.select("a img.thumb")[0]["data-src"]
       except:
           src=item.select("a img.thumb")[0]["src"]




       img.append(src)
       #获取标题
       title=item.select("header h2")[0].text
       #获取时间
       time=item.select("p.meta time")[0].text
       #获取阅读数
       look=item.select("p.meta .pv")[0].text.lstrip("阅读(").rstrip(")")
       #请求内容页面
       detail=BeautifulSoup(requests.get(item.select("header h2 a")[0]["href"]).text,"lxml")
       #获取内容 将最后18位字符窜去掉 单独爬取
       content=str( detail.select("article.article-content")[0].text.strip("\n")[:-18])
       newpwd=detail.select("article.article-content  p span")
       if len(newpwd)>0:
            if "下载密钥:" in newpwd[0].text:
                 downPwd = newpwd[0].text.strip("下载密钥:")
                 downUrl = detail.select("article.article-content  p a")[0]["href"]
            else:
                 downPwd=""
                 downUrl=""
       else:
           downPwd = ""
           downUrl = ""
       data.append({'ImgUrl':src,'Title':title,'Time':time,'Look':look,'Content':content,'downPwd':downPwd,'downUrl':downUrl})




def CreateUrl():
    for a in range(0,21):
        urls.append(url+str(a))

def  Start():
    CreateUrl()
    pool = ThreadPool(4)
    results = pool.map(page_one, urls)
    pool.close()
    pool.join()
    #page_one(1)
    print(data)




from pymongo import MongoClient

settings = {
    "ip":'localhost',   #ip
    "port":27017,           #端口
    "db_name" : "python",    #数据库名字
    "set_name" : "linduBlog"   #集合名字
}

class MyMongoDB(object):
    def __init__(self):
        try:
            self.conn = MongoClient(settings["ip"], settings["port"])
        except Exception as e:
            print(e)
        self.db = self.conn[settings["db_name"]]
        self.my_set = self.db[settings["set_name"]]

    def insert(self,dic):
        print("inser...")
        self.my_set.insert(dic)

    def update(self,dic,newdic):
        print("update...")
        self.my_set.update(dic,newdic)

    def delete(self,dic):
        print("delete...")
        self.my_set.remove(dic)

    def dbfind(self,dic):
        print("find...")
        data = self.my_set.find(dic)
        for result in data:
            print(result["name"],result["age"])





if __name__ == '__main__':
    Start()
    # newdata=[{'ImgUrl': 'https://www.xcode.me/wp-content/uploads/2014/05/book-share-list.jpg', 'Title': '《.NET安全揭秘》电子书', 'Time': '2017-09-09', 'Look': '374', 'Content': '作为.NET程序员、.NET应用架构师和.NET安全工作人员,如何才能开发和设计出安全的.NET应用?如何才能维护和保证.NET应用系统的安全性?本书是资深.NET专家和安全专家多年工作经验的结晶,深刻揭示了.NET系统的安全特性及其工作原理,系统而全面地讲解了构建安全的.NET应用所必须掌握的所有理论知识,并包含大量实践。\n第一部分:.NET安全基础,透彻讲解了.NET体系结构、程序集与反射、应用程序域和CLR寄宿等核心技术,这部分内容是.NET架构的核心,同时也是理解.NET底层安全机制的基础。\n第二部分:.NET平台安全性,深入分析了代码访问的安全性和基于角色的安全性的原理,这部分内容既是.NET应用框架安全性的基础,也是整个.NET平台体系安全性的核心。\n第三部分:数据安全,深刻阐述了数据加密、数据存储和数据通信的安全性,这部分内容介于.NET平台底层安全性与.NET应用安全性之间,是联系二者的纽带。\n第四部分:.NET应用安全性,全面讲解.NET平台下ASP.NET、WCF、WPF和Open XML等常用框架和技术的安全机制与原理。\n第五部分:高级扩展,重点介绍WIF框架和Windows Azure的安全性,这是.NET安全领域未来的重心之一。\n本书是构建安全.NET应用的百科全书,适合所有关注和学习.NET安全的读者阅读。', 'downPwd': 'szff', 'downUrl': 'https://pan.baidu.com/s/1dEX5Jc1'}]
    # print(newdata)
    m=MyMongoDB()
    m.insert(data)
    #print(len("\n下载密钥:fsic\n零度电子书下载"))






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值