零基础学 Python(2018 版)
尹会生
前游戏公司技术总监,前新浪网技术经理
80146 人已学习
新⼈⾸单¥68
课程目录
已完结/共 72 讲
第一章 :Python介绍和安装 (3讲)
第二章 :Python基础语法 (3讲)
第四章 :条件与循环 (5讲)
第五章 :映射与字典 (2讲)
第六章 :文件和输入输出 (2讲)
第七章 :错误和异常 (1讲)
第九章 :模块 (1讲)
第十章 :语法规范 (1讲)
第十一章 :面向对象编程 (4讲)
第十二章 :多线程编程 (2讲)
第十六章 :综合案例 & 结课测试 (1讲)
特别放送 (1讲)
零基础学 Python(2018 版)
登录|注册
留言
16
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 69 | 使用爬虫爬取新闻网站
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | Python语言的特点
02 | Python的发展历史与版本
03 | Python的安装
04 | Python程序的书写规则
05 | 基础数据类型
06 | 变量的定义和常用操作
07 | 序列的概念
08 | 字符串的定义和使用
09 | 字符串的常用操作
10 | 元组的定义和常用操作
11 | 列表的定义和常用操作
12 | 条件语句
13 | for循环
14 | while循环
15 | for循环语句中的if嵌套
16 | while循环语句中的if嵌套
17 | 字典的定义和常用操作
18 | 列表推导式与字典推导式
19 | 文件的内建函数
20 | 文件的常用操作
21 | 异常的检测和处理
22 | 函数的定义和常用操作
23 | 函数的可变长参数
24 | 函数的变量作用域
25 | 函数的迭代器与生成器
26 | Lambda表达式
27 | Python内建函数
28 | 闭包的定义
29 | 闭包的使用
30 | 装饰器的定义
31 | 装饰器的使用
32 | 自定义上下文管理器
33 | 模块的定义
34 | PEP8编码规范
35 | 类与实例
36 | 如何增加类的属性和方法
37 | 类的继承
38 | 类的使用-自定义with语句
39 | 多线程编程的定义
40 | 经典的生产者和消费者问题
41 | Python标准库的定义
42 | 正则表达式库re
43 | 正则表达式的元字符
44 | 正则表达式分组功能实例
45 | 正则表达式库函数match与search的区别
46 | 正则表达式库替换函数sub()的实例
47 | 日期与时间函数库
48 | 数学相关库
49 | 使用命令行对文件和文件夹操作
50 | 文件与目录操作库
51 | 机器学习的一般流程与NumPy安装
52 | NumPy的数组与数据类型
53 | NumPy数组和标量的计算
54 | NumPy数组的索引和切片
55 | pandas安装与Series结构
56 | Series的基本操作
57 | Dataframe的基本操作
58 | 层次化索引
59 | Matplotlib的安装与绘图
60 | 机器学习分类的原理
61 | Tensorflow的安装
62 | 根据特征值分类的模型和代码
63 | 网页数据的采集与urllib库
64 | 网页常见的两种请求方式get和post
65 | HTTP头部信息的模拟
66 | requests库的基本使用
67 | 结合正则表达式爬取图片链接
68 | Beautiful Soup的安装和使用
69 | 使用爬虫爬取新闻网站
70 | 使用爬虫爬取图片链接并下载图片
强势回归:零基础学Python2022版来啦!
71 | 如何分析源代码并设计合理的代码结构&结课测试
本节摘要

注意:原视频中的链接 http://www.infoq.com/cn/news 已失效,可以替换为 http://www.infoq.com/news ,然后再将代码中的 news_type_block 改为 items_content 即可。

课程源码、课件及课后作业地址:

https://gitee.com/geektime-geekbang/geekbangpython

登录 后留言

全部留言(16)

  • 最新
  • 精选
鬼金阳
最近想爬一个aspx网站,发现aspx网站爬虫方法挺复杂的,网上介绍都挺笼统,请问老师有没有这方面比较详细的教程资料?

作者回复: 如果是想系统的爬取一个网站,建议使用框架来实现,视频介绍的是爬虫的原理和自己编写爬虫,建议你参考一下scrapy框架,提供一个中文文档地址: https://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html

2019-02-02
1
Nick
for title_href in soup.find_all('div', class_='news_type_block'): print([title.get('title') for title in title_href.find_all('a') if title.get('title')]) 最下面两行是啥语法?

作者回复: for in是python的遍历某个对象的语法噢

2019-01-01
2
1
不想当小白
请问老师,那个headers={}中的内容怎么获取呀?

作者回复: headers内容来源于标准的http协议的定义,一般我会先使用浏览器访问目标网站,发起第一次请求前,按F12出现浏览器的调试界面,在请求时就可以抓到对应的headers 。当然还能抓到很多其他有用的信息噢

2018-10-24
2
1
更好的人
老师我想问下headers是如何伪造的,是打开F12,在network中随便找个请求将其中的headers拷贝下来使用嘛

作者回复: 可以使用,另外python 有一个 fake-useragent 第三方包,可以导入随机的header

2020-03-18
张望
project interpreter里已经装了bs4,但总是报错ModuleNotFoundError: No module named 'bs4'是为什么呢?

作者回复: 是不是系统安装了多个版本的python? 运行你的代码的python没有安装bs4?

2020-02-18
旭茂
网页改了,div用items__content,两个双下划线的: def craw2(url): response = requests.get(url, headers=headers) # print(response.text) soup = BeautifulSoup(response.text, 'lxml') for title_href in soup.find_all('div', class_='items__content'): for title in title_href.find_all('a'): if title.get('title'): print(title.get('title')) def my_thread(current_url, page_number): craw2(current_url) print('上面为第%s页的数据\n\n\n\n' % (page_number)) for i in range(0, 46, 15): if i == 0: url = 'http://www.infoq.com/news' else: url = 'http://www.infoq.com/news' + str(i) t1 = threading.Thread(target=my_thread, args=(url, i)) t1.start()

作者回复: 可以用英文站来练习,改版不大,参考 https://github.com/wilsonyin123/geekbangpython/tree/master/python_demo

2020-01-11
程序员人生
这个网页已经爬不了啦

作者回复: 可以用其他静态页面试一下,网站改版了

2019-08-02
🌟双子嘟🌟🙄😱🤗😴
老师,网站的数据如果是页面打开后,通过JS调用接口去生成的,是不是不能使用这种方式

作者回复: 动态网页用selenium+chrome(phantonJS)

2019-07-02
不麻烦
现在运行没有打印数据,是不是别人做了反爬虫?萌新求解

作者回复: 可以将抓取网页部分的代码单独拆分出来,单独运行,看看是否有输出

2019-04-23
硕杨Sxuya
下面是 infoq 改版后网页的获取内容的代码,但是得到的内容并不是浏览器查看html的内容,而是十分少的内容,还有乱麻。请问怎么回事呢? --- from bs4 import BeautifulSoup import requests header_i = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", "Cache-Control": "no-cache", "Connection": "keep-alive", "Cookie": "_ga=GA1.2.236308595.1542204557; _itt=1; GCID=7d9c08f-e052716-92486ca-1ef06ad-cd; GCESS=BAQEAC8NAAMEbUWUXAIEbUWUXAEEmV4PAAoEAAAAAAYE1hDl2gcEjYGeiwkBAQgBAwsCBAAMAQEFBAAAAAA-; Hm_lvt_094d2af1d9a57fd9249b3fa259428445=1553224053; Hm_lpvt_094d2af1d9a57fd9249b3fa259428445=1553227368; SERVERID=1fa1f330efedec1559b3abbcb6e30f50|1553227540|1553224054", "DNT": "1", "Host": "www.infoq.cn", "Pragma": "no-cache", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36", } url = 'https://www.infoq.cn' response = requests.get(url, headers=header_i) soup = BeautifulSoup(response.text, 'lxml') print(soup.prettify())

作者回复: 您好,因为infoq在视频录制之后网页更新过,因此需要根据具体的报错来调整爬虫的代码。 乱码一般是因为 http头部“ "Accept-Encoding": "gzip, deflate, br",” 信息传递的问题, 考虑去掉gzip 再试一下

2019-03-28
收起评论