爬虫系列的第一篇文章,本篇帮助不大(只能教你利用requests库获取HTML),后续篇(二)会有案例讲解。

python版本:python 3.7.0b1

IDE:PyCharm 2016.3.2

涉及模块:requests  &  builtwith & whois

模块安装方法:Win+R 进入cmd, 进入文件夹Scripts

命令:pip install requests / pip install requests / pip install whois(如不能正确安装,请留言或自行百度解决)

如要在PyCharm中使用库,先添加一下(添加方法)。


话不多说,先上代码:

  1. #coding : utf-8
  2. import requests
  3. import builtwith #引入所需python库
  4. print("开始爬取")
  5. url = "https://www.wenjiwu.com/doc/uqzlni.html" #爬取对象网址
  6. r = requests.get(url) #requests模块get方法
  7. print (r.status_code) #xxx.status_code方法,返回值若为200,则爬取成功
  8. print (r.text) #xxx.text方法,得到URL对应HTML源码
  9. print (builtwith.parse(url)) #builtwith模块将URL作为参数,返回该网站使用的技术

(url网址随意,baidu, imooc...都可以)

脚本运行结果:

可以看到,程序正常运行,返回值200,爬取成功,builtwith模块得到了示例网站 web-servers: Nginx(服务器类型,详细了解),

使用了jQuery的javascript框架。但是碍于篇幅,其中HTML源码内容运行时注释掉了,不要惊讶!!!

r.text 结果(部分):

(内容无意中伤 Single Dog, Me too  #_# )


补充:写成函数形式

  1. #coding : utf-8
  2. import requests
  3. import whois
  4. import builtwith
  5.  
  6. def download(url, x):
  7. print ("downloading...")
  8. ans = requests.get(url)
  9. islink = ans.status_code # '''通行码'''
  10. user = whois.whois(url) #'''网站所有者'''
  11. pattern = builtwith.parse(url) #'''网站类型'''
  12. result = ans.text #'''网站内容HTML'''
  13. if islink == 200:
  14. print ("successfully link!")
  15. else:
  16. print ("Sorry, it is no found!")
  17. if x == 'y':
  18. print ('owner: ', user)
  19. print ('pattern: ', pattern)
  20. print ('text: ', result)
  21. return result
  22. else:
  23. return 000
  24. url = "https://www.baidu.com"
  25. download(url, 'y')

补充:把爬取的内容写入txt文件

  1. # 写入*.txt文件
  2. f = open("D:\python3.7\\testf.txt", mode='a', errors='ignore')
  3. for x in ans.text:
  4. f.write(x)
  5. f.close()

文件地址随意,errors=‘ignore’是为了防止诸如  ...'\xe7'..., illegal multibyte sequence转码问题的出现。


转载请注明出处,欢迎留言讨论。


python网络爬虫入门(一)的更多相关文章

  1. python网络爬虫入门范例

    python网络爬虫入门范例 Windows用户建议安装anaconda,因为有些套件难以安装. 安装使用pip install * 找出所有含有特定标签的HTML元素 找出含有特定CSS属性的元素 ...

  2. Python网络爬虫入门篇

    1.  预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. 2. Python爬虫基本流程 a. 发送请求 使用 ...

  3. Python网络爬虫入门实战(爬取最近7天的天气以及最高/最低气温)

    _ 前言 本文文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Bo_wen   最近两天学习了一下python,并自己写了一个 ...

  4. python网络爬虫入门(二)

    刚去看了一下,18年2月份写了第一篇关于爬虫的文章(仅仅介绍了使用requests库去获取HTML代码),一年多之后看来很稚嫩也没有多少参考的意义,但没想着要去修改它,留着也是一个回忆吧.至少证明着我 ...

  5. python网络爬虫-入门(二)

    为什么要学网络爬虫 可以替代人工从网页中找到数据并复制粘贴到excel中,这种重复性的工作不仅浪费时间还一不留神还会出错----解决无法自动化和无法实时获取数据     对于这些公开数据的应用价值,我 ...

  6. python网络爬虫-入门(一)

    前言 1.爬虫程序是Dt(Data Technology,数据技术)收集信息的基础,爬取到目标网站的资料后,就可以分析和建立应用了. 2.python是一个简单.有效的语言,爬虫所需要的获取.存储.整 ...

  7. Python网络爬虫实战(一)快速入门

    本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...

  8. python网络爬虫之入门[一]

    目录 前言 一.探讨什么是python网络爬虫? 二.一个针对于网络传输的抓包工具fiddler 三.学习request模块来爬取第一个网页 * 扩展内容(爬取top250的网页) 后记 @(目录) ...

  9. python网络爬虫实战之快速入门

    本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...

随机推荐

  1. Xamarin.Android 利用Fragment实现底部菜单

    效果图: 第一步:添加引用 引用 Crosslight.Xamarin.Android.Support.v7.AppCompat 这个包. 第二步:绘制Main和Fragment界面 fg_home. ...

  2. Android--多线程之进程与线程

    前言 对于Android程序中,使用多线程的技术是必不可少的,就拿之前最简单的例子来说明,对于Android4.0+的应用而言,访问网络必须另起线程才可以访问.本片博客介绍Android下进程和线程, ...

  3. Js中处理日期加减天数

    Js的处理日期还是很方便的. 一. 格式化日期为2017-07-04的格式 function formatTime(date) { var year = date.getFullYear(); var ...

  4. wamp解决ajax跨域问题

    若使用ajax测试本地数据时,遇到的跨域问题,如 因为ajax只能用于请求服务器的数据,而在本地测试,打开的文件是以 file:// 的形式, 所以报错 可以通过 nginx 建立反向代理,处理静态文 ...

  5. 【EF6学习笔记】(十一)实施继承

    上篇链接:EF学习笔记(十) 处理并发 本篇原文链接:Implementing Inheritance 面向对象的世界里,继承可以很好的重用代码.在本章就对Instructor和Student两个类进 ...

  6. 【Python】正则表达式纯代码极简教程

    <Python3正则表达式>文字版详细教程链接:https://www.cnblogs.com/leejack/p/9189796.html ''' 内容:Python3正则表达式 日期: ...

  7. mysql开启general_log查看执行sql

    1.查看是否打开 SHOW variables like "%general_log%"; 2.打开 set global general_log=On 3.查看sql执行 tai ...

  8. 翻译:replace into语句(已提交到MariaDB官方手册)

    本文为mariadb官方手册:REPLACE INTO的译文. 原文:https://mariadb.com/kb/en/replace/ 我提交到MariaDB官方手册的译文:https://mar ...

  9. OJ:访问 const 成员函数问题

    Description 补足程序使得其输出结果是: 40 #include <iostream> #include <string> using namespace std; ...

  10. JS-面向对象编程-对象方法添加属性

    A-对象扩展属性及方法: obj.属性名=属性值 obj[属性名]=属性值 方式一: var obj={}; obj.Name="liming"; obj.Age="27 ...