新浪微博有反爬虫机制,编写python爬取微博图片的功能代码
时间: 2024-04-05 11:34:43 浏览: 34
是的,新浪微博有反爬虫机制,因此在编写爬取微博图片的功能代码时需要注意一些细节。以下是一个简单的爬取微博图片的 Python 代码示例:
```python
import requests
import re
import os
import time
# 设置请求头,模拟浏览器发送请求
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 微博图片 URL 的正则表达式
pattern = 'https://wx[1-4].sinaimg.cn/large/.*?\.jpg'
# 要爬取的微博 URL
url = 'https://weibo.com/xxxxx'
# 发送请求,获取页面 HTML
response = requests.get(url, headers=headers)
html = response.text
# 从 HTML 中提取出所有微博图片的 URL
pic_urls = re.findall(pattern, html)
# 创建保存图片的文件夹
if not os.path.exists('pics'):
os.mkdir('pics')
# 遍历图片 URL,依次下载图片
for i, pic_url in enumerate(pic_urls):
response = requests.get(pic_url, headers=headers)
filename = os.path.join('pics', 'pic{}.jpg'.format(i))
with open(filename, 'wb') as f:
f.write(response.content)
time.sleep(1) # 延时1秒,避免被封IP
print('已下载图片:{}'.format(filename))
```
解释一下代码:
1. 导入需要的模块:`requests` 用于发送 HTTP 请求,`re` 用于处理正则表达式,`os` 用于操作文件系统,`time` 用于实现延时。
2. 设置请求头,模拟浏览器发送请求。
3. 定义微博图片 URL 的正则表达式。
4. 设定要爬取的微博 URL。
5. 发送请求,获取页面 HTML。
6. 从 HTML 中提取出所有微博图片的 URL。
7. 创建保存图片的文件夹。
8. 遍历图片 URL,依次下载图片。注意,为了避免被封 IP,我们需要设置延时,推荐每下载一张图片就延时 1 秒。
9. 打印已下载的图片文件名。
需要注意的是,以上代码只能爬取公开的微博图片,如果要爬取私密的图片或者视频,需要先登录微博账号,然后再发送带有登录信息的请求。此外,爬取微博图片也需要遵守相关法律法规,不得侵犯他人隐私权等权益。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)