• 在线客服

  • 扫描二维码
    下载博学谷APP

  • 扫描二维码
    关注博学谷微信公众号

  • 意见反馈

博学谷 > 资讯

原创 如何使用Python爬虫抓取数据?

发布时间:2019-08-13 18:56:48 浏览 7368 来源:博学谷资讯 作者:照照

    Python爬虫应用十分广泛,无论是各类搜索引擎,还是日常数据采集,都需要爬虫的参与。其实爬虫的基本原理很简单,今天小编就教大家如何使用Python爬虫抓取数据,感兴趣的小伙伴赶紧看下去吧!

     

    Python爬虫抓取数据

     

    工具安装

     

    首先需要安装Python的requests和BeautifulSoup库。我们用Requests库用抓取网页的内容,使用BeautifulSoup库来从网页中提取数据。

     

    安装python

     

    运行pip install requests

     

    运行pip install BeautifulSoup

     

    抓取网页

    完成必要工具安装后,我们正式开始编写我们的爬虫。我们的第一个任务是要抓取所有豆瓣上的图书信息。我们以https://book.douban.com/subject/26986954/为例,首先看看开如何抓取网页的内容。

     

    提取内容

     

    抓取到网页的内容后,我们要做的就是提取出我们想要的内容。在我们的第一个例子中,我们只需要提取书名。首先我们导入BeautifulSoup库,使用BeautifulSoup我们可以非常简单的提取网页的特定内容。

     

    连续抓取网页

     

    到目前为止,我们已经可以抓取单个网页的内容了,现在让我们看看如何抓取整个网站的内容。我们知道网页之间是通过超链接互相连接在一起的,通过链接我们可以访问整个网络。所以我们可以从每个页面提取出包含指向其它网页的链接,然后重复的对新链接进行抓取。

     

    准备

     

    IDE:pyCharm

     

    库:requests、lxm

     

    大概介绍一下,这俩库主要为我们做什么服务的

     

    requests:获取网页源代码

     

    lxml:得到网页源代码中的指定数据

     

    言简意赅有没有 ^_^

     

    搭建环境

     

    这里的搭建环境,可不是搭建python的开发环境,这里的搭建环境是指,我们使用pycharm新建一个python项目,然后弄好requests和lxml 新建一个项目,光溜溜的啥也没有,新建个src文件夹再在里面直接新建一个Test.py吧 。

     

    依赖库导入

     

    在Test.py中输入:

     

    import requests

    这个时候,requests会报红线,这时候,我们将光标对准requests,按快捷键:alt + enter,pycharm会给出解决之道,这时候,选择install package requests,pycharm就会自动为我们安装了,我们只需要稍等片刻,这个库就安装好了。lxml的安装方式同理.

     

    将这两个库安装完毕后,编译器就不会报红线了。

     

    取网页源代码

     

    requests可以很方便的让我们得到网页的源代码。

     

    获取源码:

     

    # 获取源码

     

    html = requests.get("https://blog.csdn.net/it_xf?viewmode=contents")

     

    # 打印源码

     

    print html.text

     

    代码就是这么简单,这个html.text便是这个 URL的源码

     

    获取指定数据

     

    现在我们已经得到网页源码了,这时就需要用到lxml来来筛选出我们所需要的信息

     

    首先我们需要分析一下源码,我这里使用的是chrome浏览器,所以右键检查。

     

    然后在源代码中,定位找到第一篇 。

     

    首先点击源码页右上角的箭头,然后在网页内容中选中文章标题,这个时候,源码会定位到标题这里,

     

    这时候选中源码的标题元素,右键复制。

     

    得到xpath,它相当于地址。比如网页某长图片在源码中的位置。

     

    表达式://*[@id="mainBox"]/main/div[2]/div[1]/h4/a

     

    首先,//表示根节点,也就是说啊,这//后面的东西为根,则说明只有一个啊。我们需要的东西,在这里面。

     

    然后/表示往下层寻找,根据图片,也显而易见,div -> main -> div[2] -> div[1] -> h4 -> a

     

    追踪到a这里,然后我们在后面加个/text,表示要把元素的内容提取出来,所以我们最终的表达式长这样:

     

    //*[@id="mainBox"]/main/div[2]/div[1]/h4/a/text()

     

    这个表达式只针对这个网页的这个元素,不难理解吧?

     

    那么这个东西怎么用呢?

     

    所有代码:

     

    import requests

     

    from lxml import etree

     

    html = requests.get("https://blog.csdn.net/it_xf?viewmode=contents")

     

    # print html.text

     

    etree_html = etree. HTML(html.text)

     

    content = etree_html.xpath('//*[@id="mainBox"]/main/div[2]/div[1]/h4/a/text()')

     

    for each in content:

     

    print(each)

     

    这时候,each里面的数据就是我们想要得到的数据了

     

    打印结果:

     

    如何撸一个ArrayList

     

    打印结果却是这个结果,我们把换行和空格去掉

     

    import requests

     

    from lxml import etree

     

    html = requests.get("https://blog.csdn.net/it_xf?viewmode=contents")

     

    # print html.text

     

    etree_html = etree.HTML(html.text)

     

    content = etree_html.xpath('//*[@id="mainBox"]/main/div[2]/div[1]/h4/a/text()')

     

    for each in content:

     

    replace = each.replace('\n', '').replace(' ', '')

     

    if replace == '\n' or replace == '':

     

    continue

     

    else:

     

    print(replace)

     

    打印结果:

     

    如何撸一个ArrayList

     

    用到了requests获取网页列表,用lxml筛选数据,可以看出python用来在网页上爬取数据确实方便不少,chrome也支持直接在源码中得到表达式xpath,这两个库的内容肯定不止这一点点,还有很多功能等着大家去挖掘。

     

    以上就是“如何使用Python爬虫抓取数据”的详细讲解,大家都听懂了吗?

Python爬虫 实战项目 网络爬虫

    申请免费试学名额    

在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!

上一篇: 代码规范是什么?PEP8规范案例讲解 下一篇: 学习Python能拿多少钱?哪些人适合学习Python?

相关推荐 更多

    推荐课程

  • 数据分析师的实践手册
  • Python多任务并发编程
  • 数据分析进阶技能:Pandas

热门文章

  • 前端是什么
  • 前端开发的工作职责
  • 前端开发需要会什么?先掌握这三大核心关键技术
  • 前端开发的工作方向有哪些?
  • 简历加分-4步写出HR想要的简历
  • 程序员如何突击面试?两大招带你拿下面试官
  • 程序员面试技巧
  • 架构师的厉害之处竟然是这……
  • 架构师书籍推荐
  • 懂了这些,才能成为架构师
  • 查看更多

    热门标签

  • UI培训机构
  • 搜索引擎算法
  • Linux基础
  • Python培训
  • PM入门
  • 软件测试工程师
  • 前端框架
  • PHP程序员
  • 职业技能
  • 社群运营
  • 影视制作培训
  • 软件测试面试题

扫描二维码,了解更多信息

博学谷二维码

深圳SEO优化公司伦敦网站优化规划优化网站皆选大将军20网站权重优化攻略固原网站优化哪里有怎么以低成本给自己的网站做优化惠州网站首页关键词优化费用靖江网站优化怎么做对网站优化的影响seo怎么优化网站必看坪山网站关键词优化价格平顶山网站关键词优化技术嘉兴网站seo优化韶关网站优化托管策划南昌企业网站怎么优化凯里网站优化公司哪家专业移动端网站怎么优化巩义网站自然优化哪家价格便宜怎么优化我的网站从微信进网站对优化武汉优化网站排行榜沧州百度快照网站优化哪个公司好淄博网站的优化口碑好的企业网站优化服务商郴州高质量营销型网站优化网站优化感想深圳网站优化培训学校新兴搜索引擎网站优化服务湖南网站优化厂家报价佛山网站排名优化推广什么书能学精网站优化歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化