目录

※一、理解网页结构

★1.1查看网页源代码

 ★1.2检查

 ※二、获取网页数据

★2.1 安装requests库

★2.2 使用requests发生网络请求

 ★2.3伪装成普通用户

※2.4获取豆瓣电影标题

 ※参考:



★Python爬虫 ※ 入门详解_算法

※一、理解网页结构

一个网页通常由三部分代码组成:HTML代码、CSS代码和Javascript代码。

★Python爬虫 ※ 入门详解_python_02

★1.1查看网页源代码

★Python爬虫 ※ 入门详解_正则表达式_03

 

★Python爬虫 ※ 入门详解_算法_04

★Python爬虫 ※ 入门详解_数据_05

★1.2检查

鼠标移动到任意位置,右击选择检查,可以看到鼠标移动到的位置对应的代码

★Python爬虫 ※ 入门详解_算法_06

★Python爬虫 ※ 入门详解_python_07

※二、获取网页数据

要提取网页信息,需要把网页数据下载下来

使用requests库可以实现

首先

★Python爬虫 ※ 入门详解_算法_08

★2.1 安装requests库

打开cmd命令提示符,输入pip install requests,回车

★Python爬虫 ※ 入门详解_python_09

 

★Python爬虫 ※ 入门详解_数据_10

★Python爬虫 ※ 入门详解_算法_11

★2.2 使用requests发生网络请求

输入以下代码显示baidu.com的网络数据内容

import requests
res = requests.get('https://www.baidu.com/')
print(res.content.decode())
  • 1.
  • 2.
  • 3.

★Python爬虫 ※ 入门详解_正则表达式_12

★Python爬虫 ※ 入门详解_python_13

 ★2.3伪装成普通用户

如果直接获取豆瓣网的数据

>>> import requests
>>> res=requests.get('https://movie.douban.com/subject/35205446/?from=showing')
>>> print(res.content.decode())
  • 1.
  • 2.
  • 3.

★Python爬虫 ※ 入门详解_python_14

 发现没有任何结果,因为豆瓣网识别了我们的程序是一个爬虫,而豆瓣网不允许爬虫访问

解决办法:伪装成普通用户

要伪装成普通用户可以设置一个 headers 参数

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"}
import requests
res=requests.get('https://movie.douban.com/subject/35205446/?from=showing',headers=headers)
print(res.content.decode())
  • 1.
  • 2.
  • 3.
  • 4.

★Python爬虫 ※ 入门详解_正则表达式_15

如何获取headers?请参考python爬取时怎么获取头部header_z2431435的博客-博客_pythonheaders怎么获取

★Python爬虫 ※ 入门详解_普通用户_16

※2.4获取豆瓣电影标题

★Python爬虫 ※ 入门详解_数据_17

可以看出标题格式 

<span property="v:itemreviewed">铁道英雄</span>

知道了标题的格式,就可以用正则表达式获取标题的内容

正则表达式是什么呢?python 正则表达式_m0_52043808的博客-博客

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"}
import requests
res=requests.get('https://movie.douban.com/subject/35205446/?from=showing',headers=headers)
page=res.content.decode()
import re
title=re.search(r'<span property="v:itemreviewed">(.*?)</span>',page,re.S)#(.*?)是要搜索的内容
print(title.group(1))#读取第一组数组
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

★Python爬虫 ※ 入门详解_正则表达式_18

★Python爬虫 ※ 入门详解_数据_19

※参考:

编程胶囊-打造学习编程的最好系统