哪个网站做餐饮推广最好,网站添加背景音乐,矿产网站建设价格,江苏企业展厅设计公司一、爬取豆瓣电影的图片封面 1、经过上节课我们所爬取的豆瓣电影的电影名、年份、国家、导演、主演、剧情#xff0c;那么接下来我们将学习如何去爬取这些电影的图片#xff0c;并将这些图片存放在文件夹中。 2、过程实现#xff1a; 2.1、获取网页源码 首先还是和爬取电影名…
一、爬取豆瓣电影的图片封面 1、经过上节课我们所爬取的豆瓣电影的电影名、年份、国家、导演、主演、剧情那么接下来我们将学习如何去爬取这些电影的图片并将这些图片存放在文件夹中。 2、过程实现 2.1、获取网页源码 首先还是和爬取电影名一样先从网页获取到URL、然后再发送get请求、进行UA伪装此处的代码如下
if __name__ __main__:# UA伪装head {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0}# 获取urlurl https://movie.douban.com/top250# 发送请求response requests.get(url, headershead)# 返回数据类型cont_text response.textprint(cont_text)#打印数据用于查看是否爬取成功 此时有打印结果说明获取网页信息成功接下来继续对这段长数据进行处理
注意部分网页需要登录账号才能爬取此时需要在URL那一栏找到Cookie 复制这段Cookie所对应的内容将它增加到head里面去,如下列代码
# UA伪装head {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0,Cookie:ll118183; bidH3WRaEnQCkI; _pk_id.100001.4cf65df013865257fa4c.1721368722.; __yadk_uidrm8FHEGxJVSUzh7rJTZUbbphUwvgHrjb; _pk_ref.100001.4cf6%5B%22%22%2C%22%22%2C1721535985%2C%22https%3A%2F%2Fcn.bing.com%2F%22%5D; __utma30149280.1409929673.1721368655.1721448364.1721535985.8; __utmc30149280; __utma223695111.1684481215.1721368722.1721448364.1721535985.5; __utmc223695111}
Cookie用于记录用户的个人偏好和行为例如登录信息、购物车内容、网站语言等。它们还可以用于跟踪用户的浏览行为和收集统计信息以便网站可以优化用户体验和提供相关的广告。此为用户私密信息不要随意传播 2.2、找到图片所对应的标签位置 2.2.1、定位所需内容所处标签位置 用以下代码直接定位到 li 标签位置并获取所有的 li 标签信息
cont_text response.text# print(cont_text)#打印数据用于查看是否爬取成功#对得到的数据进行解析treeetree.HTML(cont_text)# print(tree)#获取所有的li标签lis_litree.xpath(//ol[classgrid_view]/li)# print(lis_li)
其打印结果为element对象 2.2.2、获取图片的URL for li in lis_li:#对单个li标签进行xpath处理#xpath返回列表用join去除列表img_url.join(li.xpath(./div/div[1]/a/img/src))print(img_url)
即获取所有li标签然后再通过xpath获取到图片的URL
其打印结果为 2.3、通过图片URL获取图片的二进制数据
有了图片的URL即可再通过get请求得到图片的二进制数据因为图片是以二进制数据的类型存放代码如下
img_url.join(li.xpath(./div/div[1]/a/img/src))# print(img_url)#发送get请求img_responserequests.get(img_url,headershead)#获取图片的二进制数据img_conimg_response.content#此处img_response.content没有用text是因为图片数据是二进制print(img_con)
其打印结果为二进制数据 2.4、存放图片到文件夹 将获取的图片信息分别写入文件存放在文件夹中将图片名后缀名改为JPG格式即可完成图片的爬取
2.4.1 导入一个库用来创建文件夹来存放图片
import os.path其创建方式为
import os.pathos.mkdir(./film_pic) #此处为在当前代码同级目录下创建一个名为film_pic的文件夹
2.4.2 创建图片文件
命名图片名后以二进制模式写入图片二进制编码数据
with open(f./film_pic/{i}.jpg,wb) as fp:fp.write(img_con) 2.5 爬取成功图片 二、完整代码实现
import os.path #导入包用来创建新的文件夹
import requests
from lxml import etreeif __name__ __main__:# UA伪装head {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0}# 获取urlurl https://movie.douban.com/top250# 发送请求response requests.get(url,headershead)# 返回数据类型cont_text response.text# print(cont_text)#打印数据用于查看是否爬取成功#对得到的数据进行解析treeetree.HTML(cont_text)# print(tree)#获取所有的li标签lis_litree.xpath(//ol[classgrid_view]/li)# print(lis_li)#将每一条li标签分别提取出来os.mkdir(./film_pic) #创建同级文件夹用来存放图片文件i0for li in lis_li:#对单个li标签进行xpath处理#xpath返回列表用join去除列表img_url.join(li.xpath(./div/div[1]/a/img/src))# print(img_url)#发送get请求img_responserequests.get(img_url,headershead)#获取图片的二进制数据img_conimg_response.contentprint(img_con)with open(f./film_pic/{i}.jpg,wb) as fp:fp.write(img_con)ii1三、随机生成UA标识 import fake_useragent#随机生成浏览器标识其中包括window、mac、Android、iOS系统
head{User-Agent:fake_useragent.UserAgent().random
}