赞
踩
目录
2.发起请求(request)(向目标网站发送请求,获取网站上的数据)
正则表达式:简单点说就是由用户制定一个规则,然后代码根据我们指定的所规则去指定内容里匹配出正确的内容
通过正则表达式把一个个图片的链接和名字给匹配出来,存放到一个列表中
这里举爬取豆瓣电影排行榜并解析其电影图片和电影名的例子来更好地学习爬虫的相关步骤
爬虫会向指定的URL发送HTTP请求,获取网页的HTML代码,然后解析HTML代码,提取出需要的信息,如文本、图片、链接等。爬虫请求URL的过程中,还可以设置请求头、请求参数、请求方法等,以便获取更精确的数据。通过爬虫请求URL,可以快速、自动地获取大量的数据,为后续的数据分析和处理提供基础。
通过发送请求,爬虫可以模拟浏览器的行为,访问网站上的各种资源,例如网页、图片、视频、音频等等。爬虫可以通过请求获取网站上的数据,然后对数据进行解析和处理,从而实现数据的抓取和提取。请求可以包含各种参数,例如请求的URL、请求的方法、请求的头部信息、请求的数据等等,这些参数可以根据需要进行设置,以便获取目标数据。
pip install requests
import requests
通过User-Agent(请求者身份标识)
点击network,按下Ctr+r或者F5刷新,拉到页面的最上方叫research的文件,打开headers,
这里我们只需要到两个简单的参数,本次案例只是做一个简单的爬虫教程,其他参数暂时不考虑
参数 | 作用 |
Request URL | 发送请求的网站地址,也就是图片所在的网址 |
user-agent | 用来模拟浏览器对网站进行访问,避免被网站监测出非法访问 |
做参数代码的准备
- url = "https://pic.netbian.com/uploads/allimg/210317/001935-16159115757f04.jpg"
- headers = {
- "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
- }
- response = requests.get(url=url,headers=headers)
- print(response.text) # 打印请求成功的网页源码,和在网页右键查看源代码的内容一样的
出现的网络源码可能会乱码
response.encoding=response.apparent_encoding
- import re
- """
- . 表示除空格外任意字符(除\n外)
- * 表示匹配字符零次或多次
- ? 表示匹配字符零次或一次
- .*? 非贪婪匹配
- """
- # src后面存放的是链接,alt后面是图片的名字
- # 直接(.*?)也是可以可以直接获取到链接,但是会匹配到其他不是我们想要的图片
- # 我们可以在前面图片信息看到链接都是/u····开头的,所以我们就设定限定条件(/u.*?)
- #这样就能匹配到我们想要的
- parr = re.compile('src="(/u.*?)".alt="(.*?)"')
- image = re.findall(parr,response.text)
- for content in image:
- print(content)
•导入lxml模块中的html功能
•使用html.fromstring函数将网页文本解析成html内容
网址:https://movie.douban.com/chart
要解析html文件,先安装lxml模块
命令:
pip install lxml
打印列表结果
然后用相同的方式,对电影的评分和图片进行爬取
- #导入网络请求库
- import requests,lxml,os
- from lxml import html #用于解析html文件
- url="https://movie.douban.com/chart"
- headers={
- "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
- }
- response=requests.get(url=url,headers=headers)
- response.encoding='utf-8'
- content=html.fromstring(response.text) #将HTTP响应的文本内容转换为HTML文档对象,以便进行后续的HTML解析和处理
- text=str(content)
- f=open("douban.html",'w',encoding='utf-8') #打开html文件,以写入模式‘w’打开,指定编码格式为utf-8
- f.write(response.text) #将爬取到的内容写入文件中
- f.close()
- import os
- names=content.xpath('//a[@class="nbg"]/@title') #运用xpath函数解析html文件找到电影的名字存储到一个列表里面
- print(names)
- scores=content.xpath('//span[@class="rating_nums"]/text()')
- print(scores)
- pictures=content.xpath('//a[@class="nbg"]/img/@src') #这里存储的是图片的网址,并组成了一个列表
- if not os.path.exists('pictures'): #创建一个文件夹
- os.mkdir('pictures')
- for i in pictures: #便利每一张图片列表的元素
- resp=requests.get(url=i,headers=headers) #依次向每张图片发送get请求,获取响应信息
- name=i.split('/').pop() #以‘/’来分割,取图片网址的提取出最后一个斜杠后面的部分来作为名字
- with open('pictures/'+name,"wb")as f: #将图片名变为name
- f.write(resp.content) #将图片存入该目录
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。