python爬虫(BeautifulSoup)

来源:互联网 发布:家用健身器材 知乎 编辑:程序博客网 时间:2024/05/18 03:20

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

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

# -*- coding: utf-8 -*-  # Auth Ethan# 爬取零度编程网站的数据import  requestsfrom  bs4 import  BeautifulSoupfrom multiprocessing.dummy import Pool as ThreadPoolurl="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 MongoClientsettings = {    "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零度电子书下载"))