import requests import re # import csv from bs4 import BeautifulSoup url = "https://movie.douban.com/top250" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.57" } resp = requests.get(url, headers = headers) page_content = resp.text #图片 resp = BeautifulSoup(page_content,"html.parser") pict = resp.find("ol",attrs={"class": "grid_view"}) imgs = pict.find_all("img") print(imgs) for i in imgs: src = i.get("src") print(src) name = src.split("/")[-1] img_c = requests.get(src) with open(f"douban-imgs/{name}",mode="wb") as f: f.write(img_c.content)讲解一下这段代码
时间: 2024-04-03 19:34:25 浏览: 155
这段代码是一个Python爬虫程序,用于从豆瓣电影Top250页面中提取电影海报的图片链接,并下载这些图片到本地。下面是代码的具体讲解:
1. 导入所需的Python库:
```python
import requests
import re
from bs4 import BeautifulSoup
```
其中,requests库用于发送HTTP请求,re库用于正则表达式匹配,BeautifulSoup库用于解析HTML页面。
2. 设置请求头:
```python
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.57"
}
```
这里设置了一个User-Agent请求头,用于伪装成浏览器发送请求,避免被网站反爬虫机制封禁。
3. 发送HTTP请求并获取页面内容:
```python
url = "https://movie.douban.com/top250"
resp = requests.get(url, headers = headers)
page_content = resp.text
```
这里使用requests库发送GET请求,获取豆瓣电影Top250页面的HTML源代码。由于该页面的编码为UTF-8,因此使用text属性获取响应内容。
4. 解析HTML页面:
```python
resp = BeautifulSoup(page_content,"html.parser")
pict = resp.find("ol",attrs={"class": "grid_view"})
imgs = pict.find_all("img")
```
这里使用BeautifulSoup库解析HTML页面,找到包含电影海报图片的`<ol>`标签,并获取其中所有的`<img>`标签。find()方法用于查找第一个匹配的标签,find_all()方法用于查找所有匹配的标签。
5. 提取图片链接并下载图片:
```python
for i in imgs:
src = i.get("src")
name = src.split("/")[-1]
img_c = requests.get(src)
with open(f"douban-imgs/{name}",mode="wb") as f:
f.write(img_c.content)
```
这里遍历所有的`<img>`标签,提取其中的`src`属性,即图片链接。然后根据链接发送HTTP请求,获取图片的二进制数据,并将数据写入文件中。这里使用了Python的with语句,可以自动管理文件的打开和关闭。图片保存在本地的"douban-imgs/"目录下,文件名为图片链接的最后一部分。
阅读全文